Pagini recente » Cod sursa (job #966529) | Cod sursa (job #849888) | Cod sursa (job #392087) | Cod sursa (job #2683873) | Cod sursa (job #591829)
Cod sursa(job #591829)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector <long> G[100005];
long N, Start, Cost[100005];
char V[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;
Coada[0]=Start;
for (i=0; i<n; i++)
{
V[Coada[i]]=1;
for (j=0; j<G[Coada[i]].size (); j++)
{
if (V[G[Coada[i]][j]]==0)
{
Cost[G[Coada[i]][j]]=Cost[Coada[i]]+1;
Coada[n++]=G[Coada[i]][j];
}
}
}
for (i=1; i<=N; i++)
{
if (V[i]==0)
{
Cost[i]=-1;
}
}
}
int main()
{
Read ();
BFS ();
Type ();
return 0;
}