Pagini recente » Cod sursa (job #223066) | Cod sursa (job #580149) | Cod sursa (job #9697) | Cod sursa (job #476546) | Cod sursa (job #591844)
Cod sursa(job #591844)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector <long> G[100005];
long N, Start, Cost[100005];
void Read ()
{
freopen ("bfs.in", "r", stdin);
long i, M, X, Y;
scanf ("%ld%ld%ld", &N, &M, &Start);
for (i=0; i<M; i++)
{
scanf ("%ld%ld", &X, &Y);
if (X!=Y)
{
G[X].push_back (Y);
}
}
}
void Type ()
{
freopen ("bfs.out", "w", stdout);
long i;
for (i=1; i<=N; i++)
{
printf ("%ld ", Cost[i]);
}
printf ("\n");
}
void BFS ()
{
long i, n=1, Coada[100005], j;
for (i=1; i<=N; i++)
{
Cost[i]=-1;
}
Cost[Start]=0;
Coada[0]=Start;
for (i=0; i<n; i++)
{
for (j=0; j<G[Coada[i]].size (); j++)
{
if (Cost[G[Coada[i]][j]]==-1)
{
Cost[G[Coada[i]][j]]=Cost[Coada[i]]+1;
Coada[n++]=G[Coada[i]][j];
}
}
}
}
int main()
{
Read ();
BFS ();
Type ();
return 0;
}