Pagini recente » Cod sursa (job #1990033) | Cod sursa (job #2062687) | Cod sursa (job #1294788) | Cod sursa (job #1354082) | Cod sursa (job #842341)
Cod sursa(job #842341)
#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];
void bfs(){
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);
}
}
}
}
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;
c.push(s);
bfs();
for(i=1;i<=n;++i)
if(rez[i]==mare)printf("-1 ");
else printf("%d ",rez[i]);
return 0;
}