图的宽度优先搜索 题解

题目在主页,如有出错请指出

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;
}

posted @ 2025-04-26 08:52  嵇若凌  阅读(28)  评论(0)    收藏  举报