代码如下:
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int n,m,f[510],c[510];string s;bool vst[510];
vector<int> to[510];
int main(){
cin >> m >> n;
getline(cin,s);
for(int i = 1;i <= n;i++) f[i] = 1e9;
for(int i = 1;i <= m;i++){
getline(cin,s);
int cnt = 0,sum = 0;
for(int j = 0;j < s.size();j++){
if(s[j] == ' '){
c[++cnt] = sum;
sum = 0;
}
else sum = sum * 10 + s[j] - '0';
}
c[++cnt] = sum;
for(int j = 1;j < cnt;j++){
for(int k = j + 1;k <= cnt;k++) to[c[j]].push_back(c[k]);
}
}
f[1] = 0;
q.push(1);
while(!q.empty()){
int u = q.front();
q.pop();
for(int i = 0,v;i < to[u].size();i++){
if(f[v = to[u][i]] <= f[u] + 1) continue;
f[v] = f[u] + 1;
q.push(v);
}
}
if(f[n] == 1e9) cout << "NO";
else cout << f[n] - 1;
return 0;
}
然后测试了一下数据,第一个数据错了
数据:
4
15
2 11
1 3 4 5 9
3 6 11
2 7 8 10 11 12 13 15
然后它显示我输出NO,本地却输出2,是什么问题,语言么