Pagini recente » Cod sursa (job #527098) | Cod sursa (job #2095964) | Cod sursa (job #125517) | Cod sursa (job #1751791) | Cod sursa (job #406921)
Cod sursa(job #406921)
#include<stdio.h>
#include<vector>
#include<queue>
#define N_max 100001
using namespace std;
queue<int>q;
vector<int>a[N_max];
int cost[N_max],viz[N_max],c[N_max];
unsigned int N,M,S;
int main()
{
unsigned int i,x,y,nod;
//citire
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
for(i=1;i<=M;++i){ scanf("%d%d",&x,&y); a[x].push_back(y); }
//rezolvare
q.push(S);cost[S]=0;viz[S]=1;
while(q.empty()==false)
{
nod=q.front();
q.pop();
for(i=0;i<a[nod].size();++i)
if(viz[a[nod][i]]==0)
{
q.push(a[nod][i]);
viz[a[nod][i]]=1;
cost[a[nod][i]]=cost[nod]+1;
}
}
for(i=1;i<=N;++i)
if(viz[i]==1)
printf("%d ",cost[i]);
else
printf("-1 ");
return 0;
}