Pagini recente » Cod sursa (job #1025951) | Cod sursa (job #941553) | Cod sursa (job #1198129) | Cod sursa (job #1947862) | Cod sursa (job #2570547)
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
queue<int>q;
vector<int>v[100000];
char mar[100004];
int val[100004];
void bfs(int a) {
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();
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;
}