很奇怪 在本地和洛谷在线测试#1都没问题但是提交就错
#include<bits/stdc++.h>
#define mian main
using namespace std;
int vis[505][505];
int ma[505][505];
int route[505][505];
int l[105];
int n,m;
void ini(){
for(int i=0;i<=m;i++){
for(int j=0;j<=m;j++){
if(i!=j) ma[i][j]=1e9+7;
}
}
}
int mian(){
scanf("%d%d",&n,&m);
ini();
for(int i=0;i<=n+1;i++){
string a;
getline(cin,a);
for(int j=0,k=0;j<a.size();j++){
int tmp=0;
if(a[j]>='0'&&a[j]<='9'){
while(j<a.size()&&a[j]>='0'&&a[j]<='9'){
tmp*=10;
tmp+=a[j++]-'0';
}
}
if(j==a.size()||a[j]==' '){
route[i][k++]=tmp;
l[i]++;
}
}
}
for(int i=0;i<=n+1;i++){
for(int j=0;j<=l[i];j++){
for(int k=j;k<=l[i];k++){
vis[route[i][j]][route[i][k]]=i;
ma[route[i][j]][route[i][k]]=0;
}
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
for(int k=1;k<=m;k++){
int t=1;
if(vis[j][i]==vis[i][k]&&vis[j][i]!=0) t=0;
if(ma[j][k]>ma[j][i]+ma[i][k]+t){
ma[j][k]=(ma[j][i]+ma[i][k]+t);
}
}
}
}
if(ma[1][m]==1e9+7) printf("NO");
else printf("%d",ma[1][m]);
return 0;
}