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