Pagini recente » Cod sursa (job #597366) | Cod sursa (job #2111937) | Cod sursa (job #1648381) | Cod sursa (job #3129629) | Cod sursa (job #1817508)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
vector <int>v[100001];
queue <int>q;
int viz[100001], folosit[100001];
int main() {
FILE *fin, *fout;
fin = fopen("bfs.in", "r");
fout = fopen("bfs.out", "w");
int n, m, s;
fscanf(fin, "%d%d%d", &n, &m, &s);
int i;
for(i = 0;i < m;i++) {
int auxx, auxy;
fscanf(fin, "%d%d", &auxx, &auxy);
v[auxx].push_back(auxy);
}
q.push(s);
viz[s] = 0;
folosit[s] = 1;
int aux, neigh;
while(!q.empty()) {
aux = q.front();
q.pop();
for(i = 0;i < (int)v[aux].size();i++) {
neigh = v[aux][i];
if(folosit[neigh] == 0) {
folosit[neigh] = 1;
viz[neigh] = viz[aux] + 1;
q.push(neigh);
}
}
}
for(i = 1;i <= n;i++)
if(folosit[i] == 1)
fprintf(fout, "%d ", viz[i]);
else
fprintf(fout, "-1 ");
fclose(fin);
fclose(fout);
return 0;
}