Pagini recente » Cod sursa (job #1766078) | Cod sursa (job #894079) | Cod sursa (job #2771618) | Cod sursa (job #2419225) | Cod sursa (job #356850)
Cod sursa(job #356850)
#include <stdio.h>
#include <vector>
#define Nmax 100005
#define Mmax 1000005
using namespace std;
int N,M,S,nrarc[Nmax],C[Mmax];
vector<int> G[Nmax];
void citire()
{freopen("bfs.in","r",stdin);
int i,a,b;
scanf("%d %d %d",&N,&M,&S);
for(i=1;i<=M;i++)
{scanf("%d %d",&a,&b);
G[a].push_back(b);
}
fclose(stdin);
}
void bfs()
{vector<int>::iterator it;int i,end;
memset(nrarc,-1, sizeof(nrarc));
C[1]=S;end=1;nrarc[S]=0;
for(i=1;i<=end;i++)
for(it=G[C[i]].begin();it!=G[C[i]].end();it++)
if(nrarc[*it]==-1)
{C[++end]=*it;
nrarc[*it]=nrarc[C[i]]+1;
}
}
void scrie()
{freopen("bfs.out","w",stdout);
int i;
for(i=1;i<=N;i++) printf("%d ",nrarc[i]);
printf("\n");fclose(stdout);
}
int main()
{citire();
bfs();
scrie();
return 0;
}