Pagini recente » Cod sursa (job #449972) | Cod sursa (job #2901253) | Cod sursa (job #3226840) | Cod sursa (job #2359872) | Cod sursa (job #755327)
Cod sursa(job #755327)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
vector <long> a[100005];
vector <long> :: iterator it;
long l[100005];
bool viz[100005];
int main () {
long n,m,x,y,s,i,elem;
queue<long> q;
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for (i=1;i<=m;i++) {
scanf("%ld%ld",&x,&y);
a[x].push_back(y);
}
q.push(s);
l[s]=0;
viz[s]=1;
while (!q.empty()) {
x=q.front();
for (it=a[x].begin();it!=a[x].end();++it)
if (!viz[*it]) {
elem=*it;
viz[*it]=1;
l[*it]=l[x]+1;
q.push(*it);
}
q.pop();
}
for (i=1;i<=n;i++) {
if (l[i]==0 && s!=i)
printf("-1 ");
else
if (s==i)
printf("0 ");
else
printf("%ld ",l[i]);
}
printf("\n");
return 0;
}