Cod sursa(job #1837374)

Utilizator alexandruchiriacAlexandru Chiriac alexandruchiriac Data 29 decembrie 2016 16:19:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

#define nrmax 100001
#define pb push_back
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n , m , x , a, b;
int d[nrmax];
bool used[nrmax];
vector < int > G[nrmax];
queue < int > Q;

int main()
{
    f >> n >> m >> x;
    for ( ; m-- ; )
    {
        f >> a >> b;
        G[a].pb(b);
    }
    //memset(d,-1,sizeof d);
    used[x] = 1;
    d[x] = 0;
    Q.push(x);
    while ( !Q.empty()  )
    {
         int nod = Q.front();
         Q.pop();
         for (int i = 0; i < G[nod].size() ; i++ )
         {
             int vecin = G[nod][i];
             if ( !used[ vecin ] )
             {
                 d[vecin] = d[nod] + 1;
                 used[vecin] = 1;
                 Q.push(vecin);
             }
         }
    }
    for ( int i = 1; i <= n; i++ )
    {
        if ( d[i] == 0 and i != x ) d[i] = -1;
        g << d[i] << " " ;
    }
    return 0;
}