Pagini recente » Cod sursa (job #1529914) | Cod sursa (job #2134774) | Cod sursa (job #1749754) | Cod sursa (job #2207989) | Cod sursa (job #1700016)
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector <int> L[100005];
queue <int> coada;
int n,s,viz[100005],mini[100005];
void citire(){
int n1,n2,m;
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++){
scanf("%d %d",&n1,&n2);
L[n1].push_back(n2);
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
coada.push(s);
int primul,nod;
viz[s]=1;
while(!coada.empty()){
primul=coada.front();
coada.pop();
vector <int>:: iterator it;
for(it=L[primul].begin();it!=L[primul].end();++it){
nod=*it;
if(viz[nod]==0){
mini[nod]=mini[primul]+1;
coada.push(nod);
viz[nod]=1;
}
}
}
for(int i=1;i<=n;i++)
if(viz[i]!=0||i==s)
printf("%d ",mini[i]);
else
printf("-1 ");
return 0;
}