Pagini recente » Cod sursa (job #2650273) | Cod sursa (job #1975825) | Cod sursa (job #1480635) | Cod sursa (job #2508686) | Cod sursa (job #1193122)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <bitset>
#define add push_back
using namespace std;
int n, m, s;
int sol[100005];
vector<int> v[100005];
queue<int> q;
bitset<100005> viz;
void Citire()
{
int i, x, y;
scanf("%d %d %d", &n, &m, &s);
for (i=0; i<m; i++)
{
scanf("%d %d", &x, &y);
v[x].add(y);
}
}
void Solve()
{
int a;
vector<int>::iterator i;
q.push(s);
while (!q.empty())
{
a=q.front();
q.pop();
if (!viz[a])
{
viz[a]=1;
for (i=v[a].begin(); i!=v[a].end(); ++i)
if (!viz[*i])
{
sol[*i]=sol[a]+1;
q.push(*i);
}
}
}
}
void Afisare()
{
int i;
for (i=1; i<=n; ++i)
if (viz[i])
printf("%d ", sol[i]);
else
printf("-1 ");
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
Citire();
Solve();
Afisare();
return 0;
}