Pagini recente » Cod sursa (job #181996) | Cod sursa (job #2511783) | Cod sursa (job #2113603) | Cod sursa (job #1579234) | Cod sursa (job #579117)
Cod sursa(job #579117)
#include<cstdio>
#include<vector>
#include<queue>
#define Nmax 100010
using namespace std;
int N,M,S,dist[Nmax];
vector <int> a[Nmax];
queue <int> c;
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
for(int i=1;i<=M;++i){
int x,y;
scanf("%d%d",&x,&y);
a[x].push_back(y);
}
memset(dist,-1,sizeof(dist));
dist[S]=0;
c.push(S);
while(!c.empty()){
int nod=c.front();
c.pop();
for(vector<int>::iterator it=a[nod].begin(); it!=a[nod].end(); ++it)
if(dist[*it]==-1){
dist[*it]=dist[nod]+1;
c.push(*it);
}
}
for(int i=1;i<=N;++i)
printf("%d ",dist[i]);
return 0;
}