Cod sursa(job #1725711)

Utilizator mirupetPetcan Miruna mirupet Data 6 iulie 2016 11:35:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<cstdio>
#include<vector>
#include<queue>
#define NMax 100001
using namespace std;

FILE *fin = freopen("bfs.in", "r", stdin);
FILE *fout = freopen("bfs.out", "w", stdout);

int N, M, S;
int dist[NMax];
vector < int > v[NMax];
queue < int > q;

int main()
    {
        scanf("%d%d%d", &N, &M, &S);

        for (int i = 1, X, Y; i <= M; i++)
        {
            scanf("%d%d", &X, &Y);
            v[X].push_back(Y);
        }

        for (int i = 1; i <= N; i++)
            dist[i] = -1;

        q.push(S);
        dist[S] = 0;

        vector < int > :: iterator it;
        while (!q.empty())
        {
            int node = q.front();
            q.pop();
            for (it = v[node].begin(); it != v[node].end(); it++)
                if (dist[*it] == -1)
                {
                    dist[*it] = dist[node] + 1;
                    q.push(*it);
                }
        }

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

    }