Pagini recente » Cod sursa (job #2930688) | Cod sursa (job #3274529) | Monitorul de evaluare | Cod sursa (job #1499061) | Cod sursa (job #2792665)
#include <bits/stdc++.h>
using namespace std;
vector<int> ad[100001];
struct mystr
{
int nod, val;
};
queue<mystr> q;
int f[100001];
void bfs()
{
int a, i, b;
mystr aux;
while (!q.empty())
{
a = q.front().nod;
b = q.front().val;
f[a] = b;
q.pop();
for (i = 0; i < ad[a].size(); i++)
{
if (f[ad[a][i]] == -1)
{
aux.nod = ad[a][i];
aux.val = b + 1;
q.push(aux);
}
}
}
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n, m, s, i, a, b;
cin >> n >> m >> s;
for (i = 0; i < m; i++)
{
cin >> a >> b;
ad[a].push_back(b);
}
for (i = 1; i <= n; i++)
f[i] = -1;
mystr aux;
aux.nod = s;
aux.val = 0;
q.push(aux);
bfs();
for (i = 1; i <= n; i++)
{
if (i == s)
cout << 0 << ' ';
else
cout << f[i] << ' ';
}
return 0;
}