图的宽度优先搜索 题解
题目在主页,如有出错请指出
include <bits/stdc++.h>
using namespace std;
int a[105][105], dis[105];
bool vis[105];
queue < int > q;
int main()
{
int n;
cin >> n;
for (int i = 1;i <= n;i++)
{
int u, k;
cin >> u >> k;
for (int j = 1;j <= k;j++)
{
int v;
cin >> v;
a[u][v] = 1;
}
}
memset(dis, -1, sizeof dis);
q.push(1);
dis[1] = 0;
vis[1] = 1;
while (!q.empty())
{
int now = q.front();
q.pop();
for (int i = 1; i <= n; i++)
{
if (vis[i] == 0 && a[now][i])
{
vis[i] = 1;
q.push(i);
dis[i] = dis[now] + 1;
}
}
}
for (int i = 1; i <= n; i++)
cout << i << " " << dis[i] << endl;
return 0;
}

浙公网安备 33010602011771号