测试点样例过了不得分
#include <bits/stdc++.h>
using namespace std;
int m, n, sum;
int dis[505][505];
int main() {
cin >> m >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dis[i][j] = 0;
}
}
for (int i = 1; i <= m+1; i++) {
int ls[505],j=1;
string a;
getline(cin,a);
ls[j]=0;
for(int k=0;k<a.size();k++){
if(a[k]==' '){
j++;
ls[j]=0;
}
else{
ls[j]*=10;
ls[j]+=(a[k]-'0');
}
}
for (int jj = 1; jj < j; jj++) {
for (int k = jj + 1; k <= j; k++) {
dis[ls[jj]][ls[k]] = 1;
}
}
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=n;j++){
// cout<<dis[i][j]<<" ";
// }
// cout<<"\n";
// }
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (dis[i][k] != 0 && dis[k][j] != 0) {
if (dis[i][j] == 0) {
dis[i][j] += dis[i][k] + dis[k][j];
} else if (dis[i][k] + dis[k][j] < dis[i][j]) {
dis[i][j] += dis[i][k] + dis[k][j];
}
}
}
}
}
if (dis[1][n] == 0) {
cout << "N0";
} else {
cout << dis[1][n] - 1;
}
return 0;
}