Pagini recente » Cod sursa (job #2368356) | Cod sursa (job #1263825) | Cod sursa (job #598866) | Cod sursa (job #1820834) | Cod sursa (job #502831)
Cod sursa(job #502831)
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <vector>
#define UND (-1)
using namespace std;
int main()
{
FILE *f = fopen("bfs.in", "rt");
FILE *g = fopen("bfs.out", "wt");
int no, n, node, i, x, y;
fscanf(f, "%d%d%d" , &no, &n, &node);
node--;
vector <int> *v;
v = new vector <int> [no];
for (i = 0; i < n; i++) {
fscanf (f, "%d%d", &x, &y);
v[--x].push_back(--y);
}
queue <int> q;
int *d = new int [no];
for (i = 0; i < no; i++)
d[i] = UND;
d[node] = 0;
q.push(node);
while (!q.empty()) {
int current = q.front();
q.pop();
for (vector <int>::iterator it = v[current].begin(); it != v[current].end(); it++) {
if (d[*it] == UND) {
d[*it] = d[current] + 1;
q.push(*it);
}
}
}
for (i = 0; i < no; i++) {
printf("%d ", d[i]);
}
delete [] v;
fclose(f);
fclose(g);
return 0;
}