Pagini recente » Cod sursa (job #2010229) | Cod sursa (job #1281746) | Cod sursa (job #2882368) | Cod sursa (job #2841628) | Cod sursa (job #768852)
Cod sursa(job #768852)
/*
Parcurgerea in latime intr-un graf.
*/
#include <iostream>
#include <vector>
#include <queue>
#include <stdio.h>
#define MAXN 100010
using namespace std;
int nr_noduri, nr_muchii, sursa;
int dist[MAXN];
vector<int> noduri[MAXN];
void bfs () {
queue<int> coada;
int i;
for (i = 1; i <= nr_noduri; i++)
dist[i] = -1;
dist[sursa] = 0;
coada.push(sursa);
while (!coada.empty()) {
int u = coada.front();
coada.pop();
for (i = 0; i < noduri[u].size(); i++) {
int v = noduri[u][i];
if (dist[v] == -1 || dist[v] > dist[u] + 1) {
dist[v] = dist[u] + 1;
coada.push(v);
}
}
}
}
int main () {
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i, x, y;
scanf("%d %d %d", &nr_noduri, &nr_muchii, &sursa);
for (i = 0; i < nr_muchii; i++) {
scanf("%d %d", &x, &y);
noduri[x].push_back(y);
}
bfs();
for (i = 1; i <= nr_noduri; i++)
printf("%d ", dist[i]);
printf("\n");
return 0;
}