Cod sursa(job #229365)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 9 decembrie 2008 22:55:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>

using namespace std;

#define MAXN 100005

int N, M, S;
int dist[MAXN];
queue<int> Q;
vector<int> con[MAXN];

int main()
{
    freopen("bfs.in", "rt", stdin);
    freopen("bfs.out", "wt", stdout);

    scanf("%d %d %d", &N, &M, &S);
    for (; M; M--)
    {
        int x, y;
        scanf("%d %d", &x, &y);
        con[x].push_back(y);
    }

    memset(dist, -1, sizeof(dist));

    Q.push(S); dist[S] = 0;
    for (; !Q.empty(); Q.pop())
    {
        vector<int> :: iterator it;
        for (it = con[Q.front()].begin(); it != con[Q.front()].end(); it++)
        {
            if (dist[*it] != -1)
                continue;
            dist[*it] = dist[Q.front()] + 1;
            Q.push(*it);
        }
    }

    for (int i = 1; i <= N; i++)
        printf("%d ", dist[i]);
    printf("\n");

    return 0;
}