Pagini recente » Cod sursa (job #1686538) | Cod sursa (job #2474810) | Cod sursa (job #1282983) | Cod sursa (job #207431) | Cod sursa (job #2273808)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
vector <int> v[100001];
queue <int> q;
int dist[100001], i, j, n, m, S;
void BFS ()
{
vector <int> :: iterator i;
int nod;
dist[S] = 1;
q.push(S);
while(!q.empty())
{
nod = q.front();
for (i=v[nod].begin(); i!=v[nod].end(); i++)
if (dist[*i] == 0 || dist[nod] + 1 < dist[*i])
{
dist[*i] = dist[nod] + 1;
q.push(*i);
}
q.pop();
}
}
int main()
{
fin >> n >> m >> S;
while(m--)
{
fin >> i >> j;
v[i].push_back(j);
}
BFS();
for (i=1; i<=n; i++)
if (dist[i] == 0)
{
fout << -1 << " ";
}
else
{
fout << dist[i] - 1 << " ";
}
return 0;
}