Cod sursa(job #1403260)

Utilizator 4ONI2015oni2015 4ONI2015 Data 27 martie 2015 10:11:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
#define oo 1<<30

using namespace std;
int d[100005], n, m, s, i, x, y, nod;
vector<int>v[100005];
deque<int>q;
int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    scanf("%d%d%d", &n, &m, &s);
    for(; m; m--)
    {
        scanf("%d%d", &x, &y);
        v[x].push_back(y);
    }
    q.push_back(s);
    for(i = 1; i <= n; i++)
        d[i] = oo;
    d[s] = 0;
    while(q.size())
    {
        nod = q.front();
        q.pop_front();
        for(auto it : v[nod])
            if(d[it] == oo)
            {
                d[it] = d[nod] + 1;
                q.push_back(it);
            }
    }
    for(i = 1; i <= n; i++)
        d[i] == oo ? printf("-1 ") : printf("%d ", d[i]);
    return 0;
}