Pagini recente » Cod sursa (job #2819681) | Cod sursa (job #1994385) | Cod sursa (job #2760080) | Cod sursa (job #2980519) | Cod sursa (job #1323487)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define Nmax 100005
vector <int> lista[Nmax], coada;
int N, M, Start;
int ct[Nmax]={0};
int Bfs(int nod)
{
coada.push_back(nod);
for(int i=1;i<=N;i++) ct[i]=-1;
ct[nod]=0;
while(!coada.empty())
{
int st=coada.front();
for(int i=0; i < lista[ st ].size(); i++)
{
if(ct[ lista[ st ][i] ] == -1)
{
coada.push_back( lista[st][i]);
ct[lista[st][i]]=ct[st]+1;
}
}
coada.erase(coada.begin());
}
}
int main ()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int x, y;
scanf("%d %d %d",&N, &M, &Start);
for(int i=1; i<=M; i++)
{
scanf("%d %d",&x, &y);
lista[x].push_back(y);
}
Bfs( Start);
for(int i=1; i<=N; i++)
printf("%d ",ct[i]);
return 0;
}