Cod sursa(job #1322876)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 20 ianuarie 2015 14:41:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#define MAXN 100005

using namespace std;

int n, m, s;
vector<int> a[MAXN];
int pasi[MAXN];
queue<int> q;

void parcurg()
{
    int crt, nou;
    q.push(s);
    pasi[s] = 1;
    while (!q.empty())
    {
        crt = q.front();
        q.pop();
        for (int i = 0; i < a[crt].size(); i++)
            if (pasi[a[crt][i]] == 0)
            {
                pasi[a[crt][i]] = pasi[crt] + 1;
                q.push(a[crt][i]);
            }
    }
}

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    int t1,t2;
    scanf("%d %d %d", &n, &m, &s);
    for (int i = 1; i <= m; i++)
    {
        scanf("%d %d", &t1, &t2);
        a[t1].push_back(t2);
    }
    parcurg();
    for (int i = 1; i <= n; i++)
        printf("%d ", pasi[i]-1);

    return 0;
}