Pagini recente » Cod sursa (job #2982767) | Cod sursa (job #519005) | Cod sursa (job #1915636) | Cod sursa (job #1861061) | Cod sursa (job #2570565)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
queue<int>q;
vector<int>v[100014];
char mar[100014];
int val[100014];
void bfs(int a) {
while(!q.empty()) {
for(int i=0;i<v[a].size();i++) {
if (mar[v[a][i]]==0) {
q.push(v[a][i]);
mar[v[a][i]]=1;
val[v[a][i]]=val[a]+1;
}
}
q.pop();
a=q.front();
}
if (!q.empty()) {
bfs(q.front());
}
}
int main()
{
int i, n, m, x, b, a;
FILE *fin, *fout;
fin=fopen("bfs.in" ,"r");
fout=fopen("bfs.out" ,"w");
fscanf(fin, "%d%d%d" ,&n ,&m ,&x);
for (i=0;i<m;i++) {
fscanf(fin, "%d%d" ,&a ,&b);
v[a].push_back(b);
}
q.push(x);
mar[x]=1;
bfs(x);
for (i=1;i<=n;i++) {
if (mar[i]==1) {
fprintf(fout, "%d " ,val[i]);
}
else {
fprintf(fout, "-1 ");
}
}
return 0;
}