Pagini recente » Cod sursa (job #1602660) | Cod sursa (job #1427605) | Cod sursa (job #820456) | Cod sursa (job #1402611) | Cod sursa (job #2195422)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int start[100005], t[2][1000005], coada[100005], viz[100005];
int n, m, pr, ul, nr, sursa;
void citire(){
f>>n>>m>>sursa;
int k, i, j, l;
k=0;
for(l=1;l<=m;l++){
f>>i>>j;
if(i!=j){
k++;
t[0][k]=j;
t[1][k]=start[i];
start[i]=k;
}
}
}
void BFS(){
int i,x,y;
for(i=1;i<=n;i++) viz[i]=-1;
coada[1]=sursa;
pr=ul=nr=1;
viz[sursa]=0;
while(nr!=0){
x=coada[pr];
for(i=start[x];i!=0;i=t[1][i]){
y=t[0][i];
if(viz[y]==-1){
viz[y]=1+viz[x];
ul++;nr++;
coada[ul]=y;
}
}
pr++;nr--;
}
}
void afis(){
int i;
for(i=1;i<=n;i++)
g<<viz[i]<<" ";
}
int main()
{
citire();
BFS();
afis();
return 0;
}