Pagini recente » Cod sursa (job #1581445) | Cod sursa (job #1637719) | Cod sursa (job #1917750) | Cod sursa (job #2228702) | Cod sursa (job #283434)
Cod sursa(job #283434)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
vector < int > g [100100];
vector < bool > viz(100100);
queue < int > coada;
int n,m,cost[100100],start;
void citire(){
int a,b;
scanf("%d%d%d",&n,&m,&start);
for(int i=1;i<=m;++i){
scanf("%d%d",&a,&b);
g[a].push_back(b);
}
}
void bf(){
int curr,vecini;
coada.push(start);
viz[start]=true;
while(!coada.empty()){
curr=coada.front();
coada.pop();
vecini=g[curr].size();
for (int i=0;i<vecini;++i)
if(!viz[g[curr][i]]){
coada.push(g[curr][i]);
cost[g[curr][i]]=cost[curr]+1;
viz[g[curr][i]]=1;
}
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bf();
for(int i=1;i<=n;++i)
if(viz[i])
printf("%d ",cost[i]);
else
printf("-1 ");
printf("\n");
return 0;
}