·#include<iostream>
#include<queue>
using namespace std;
int A[101][101] = {0};
int n, tt = 0, d[101] = {0}, color[101] = {0};
queue<int> Q;
void bfs (int u) {
int i, j ,k;
Q.push(u);
d[u] = tt++;
color[u] = 1;
while ( !Q.empty() ) {
j = Q.front();
Q.pop();
for ( i = 1; i <= n; i++ ) {
if ( A[j][i] == 1 && color[i] != 1 ) {
Q.push(i);
color[i] = 1;
d[i] = d[j] + 1;
}
}
}
}
int main() {
int i, j, k, v;
cin >> n;
for ( i = 0; i < n; i++ ) {
cin >> j >> k;
while ( k-- ) {
cin >> v;
A[j][v] = 1;
}
}
bfs(1);
for ( i = 1; i <= n; i++ ) if ( color[i] != 1 ) d[i] = -1;
for ( i = 1; i <= n; i++ ) cout << i << ' ' << d[i] << endl;
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交