Cod sursa(job #2212535)

Utilizator avramraresAvram Rares Stefan avramrares Data 14 iunie 2018 13:04:50
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp 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,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(i=0; i<G[nod].size() ; i++)
        {
            y=G[nod][i];
            if(!sel[y])
            {
                Q.push(y);
                sel[y]=true;
                Lg[y]=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);
    }
    bf(s);
    for(i=1;i<=n;i++)
    {
        if(Lg[i]==0 && i!=s)
            g<<-1<<" ";
        else
            g<<Lg[i]<<" ";
    }
    return 0;
}