Pagini recente » Cod sursa (job #641333) | Cod sursa (job #2241645) | Cod sursa (job #1132764) | Cod sursa (job #2039079) | Cod sursa (job #811546)
Cod sursa(job #811546)
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
#define BM 100005
#define mare (1<<30)
typedef vector<int>::iterator it;
vector<int> g[BM];
queue<int> c;
int n,m,s,rez[BM];
int main () {
int i,a,b;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(;scanf("%d %d",&a,&b)!=-1;){
g[a].push_back(b);
}
for(i=1;i<=n;++i)rez[i]=mare;
rez[s]=0;
for(it ii=g[s].begin();ii!=g[s].end();++ii)if(*ii!=s){
c.push(*ii);
rez[*ii]=1;
}
for(;c.size();c.pop()){
int f=c.front();
for(it ii=g[f].begin();ii!=g[f].end();++ii){
if(rez[*ii]==mare){
rez[*ii]=rez[f]+1;
c.push(*ii);
}
}
}
for(i=1;i<=n;++i)
if(rez[i]==mare)printf("-1 ");
else printf("%d ",rez[i]);
return 0;
}