Pagini recente » Cod sursa (job #155112) | Cod sursa (job #1250617) | Cod sursa (job #1119052) | Cod sursa (job #1295351) | Cod sursa (job #613898)
Cod sursa(job #613898)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define MaxN 100005
int N , M , S , cost[MaxN];
bool viz[MaxN];
int main ()
{
freopen ("bfs.in" , "r" , stdin);
freopen ("bfs.out" , "w" , stdout);
vector <int> lista[MaxN];
queue <int> coada;
int x , y , nod;
scanf ("%d %d %d" , &N , &M , &S);
for (int i = 1 ; i <= M ; ++i)
{
scanf ("%d %d" , &x , &y);
lista[x].push_back (y);
}
coada.push (S);
viz[S] = 1;
cost[S] = 0;
while (!coada.empty ())
{
nod = coada.front ();
for (unsigned i = 0 ; i < lista[nod].size () ; ++i)
if ( !viz[lista[nod][i]] )
{
coada.push (lista[nod][i]);
cost[lista[nod][i]] = cost[nod] + 1;
}
coada.pop ();
}
for (int i = 1 ; i <= N ; ++i)
if (cost[i] == 0 && i != S)
printf ("%d " , -1);
else
printf ("%d " , cost[i]);
return 0;
}