Cod sursa(job #1458756)

Utilizator blackoddAxinie Razvan blackodd Data 8 iulie 2015 13:21:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n, m, x;
int a,b;
vector<vector<int> >G;
vector<int>d;
queue<int> Q;

int main()
{
    fin >> n >> m >> x;

    G.resize(n + 1);
    d.resize(n + 1);

    while(m)
    {
        fin >> a >> b;

        G[a].push_back(b);

        m--;
    }

    Q.push(x);
    d[x] = 0;

    while ( !Q.empty() )
    {
        int nod = Q.front();
        Q.pop();

        for ( auto i : G[nod] )
        {
            if ( !d[i] && x != i ) {
            d[i] = d[nod] + 1;
            Q.push(i); }
        }
    }

    d[x] = 0;

    for ( int i = 1; i <= n; ++i ) {
        if ( !d[i] && i != x ) d[i] = -1;
            fout << d[i] << ' ';
    }



    fin.close();
    fout.close();
    return 0;
}