#define ll long long #define re register #define inf 0x3f3f3f3f #define N 100 usingnamespacestd; inlineint(){ int x=0,w=0;char ch=getchar(); while (!isdigit(ch))w|=ch=='-',ch=getchar(); while (isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar(); return w?-x:x; } int d[N][N],f[N][N][N]; signedmain(){ int n=read(),m=read(); memset(d,0x3f,sizeof(d)); for (int i=1;i<=m;++i){ int u=read(),v=read(); f[u][v][0]=1;d[u][v]=1; } for (int p=1;p<=64;++p) for (int k=1;k<=n;++k) for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) if (f[i][k][p-1]&f[k][j][p-1]) f[i][j][p]=1,d[i][j]=1; for (int k=1;k<=n;++k) for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) d[i][j]=min(d[i][j],d[i][k]+d[k][j]); cout<<d[1][n]<<endl; return0; }
近期评论