Cod sursa(job #2259977)

Utilizator hristacheruxiRuxandra Hristache hristacheruxi Data 14 octombrie 2018 04:46:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <vector>
#define N  100010
using namespace std;

vector <int>v[N];
int seen[N], q[N], d[N];
int n, m, S;

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    int i, st, dr, nod, a, b;

    scanf("%d%d%d", &n, &m, &S);
    for (i = 1; i <= m; i++)
    {
        scanf("%d%d", &a, &b);
        if(a != b)
            v[a].push_back(b);
    }

    for(i = 1; i <= n; i++)
        d[i] = -1;

    st = 1; dr = 2;
    q[1] = S;
    d[S] = 0;
    while (st < dr)
    {
        nod = q[st];
        seen[nod] = -1;
        for (i = 0; i < v[nod].size(); i++)
            if (seen[v[nod][i]] == 0)
            {
                d[v[nod][i]] = d[nod] + 1;
                q[dr] = v[nod][i];
                dr++;
                seen[v[nod][i]] = -1;
            }
        st++;
    }

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

    return 0;
}