Cod sursa(job #2279828)

Utilizator avramraresAvram Rares Stefan avramrares Data 10 noiembrie 2018 08:56:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f( "bfs.in" );
ofstream g( "bfs.out" );
vector < int > G[100004];
queue < int > Q;
int n,m,s,x,cr,y,sel[100003],Lg[100003];
void bf( int x )
{
    int i,p,u;
    int nod=0;
    sel[x]=true;
    Q.push(x);
    p=u=1;
    Lg[x]=0;
    while(!Q.empty())
    {
        nod=Q.front();
        for(auto it : G[nod])
        {
            if(!sel[it])
            {
                Q.push(it);
                sel[it]=true;
                Lg[it]=Lg[nod]+1;
            }
        }
        Q.pop();
    }
}
int main()
{
    int i;
    f>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        G[x].push_back(y);
       // G[y].push_back(x);
    }
    bf(s);
    for(i=1;i<=n;i++)
    {
        if(Lg[i]==0 && i!=s)
            g<<-1<<" ";
        else
            g<<Lg[i]<<" ";
    }
    return 0;
}