Cod sursa(job #912353)

Utilizator swim406Teudan Adina swim406 Data 12 martie 2013 12:44:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <vector>
#include <queue>
#define nmax 100001
using namespace std;

vector <int> G[nmax];
queue <int> q;
int cost[nmax];

int main() {
   freopen ("bfs.in", "r", stdin);
   freopen ("bfs.out", "w", stdout);
   int N, M, S, a, b, i, x, m;
   scanf ("%d %d %d", &N, &M, &S);
   for (i = 1; i <= M; ++i) {
        scanf ("%d %d", &a, &b);
        G[a].push_back(b);
   }
   for (i = 1; i <= N; ++i) cost[i] = -1;
   q.push(S);
   cost[S] = 0;
   while (!q.empty()) {
        x = q.front();
        q.pop();
        m = G[x].size();
        for (i = 0; i < m; ++i) {
            if (cost[G[x][i]] == - 1) {
                cost[G[x][i]] = cost[x] + 1;
                q.push(G[x][i]);
            }
        }
   }
   for (i = 1; i <= N; ++i) printf ("%d ", cost[i]);
    return 0;
}