Cod sursa(job #2279827)

Utilizator BogdanGhGhinea Bogdan BogdanGh Data 10 noiembrie 2018 08:55:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> G[100001];
bool sel[100001];
int n,m,p,u,i,Q[100001],Lg[100001],T[100001],nod,S,x,y;
void bf(int x)
{
    sel[x]=true;
    p=u=1;
    Q[p]=x;
    while(p<=u)
    {
        nod=Q[p];
        for(auto it:G[nod])
            if(!sel[it]){
                Q[++u]=it;
                sel[it]=true;
                Lg[it]=Lg[nod]+1;
                T[it]=nod;
            }
            p++;
    }
}
int main()
{
    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(i!=S&&Lg[i]==0)Lg[i]=-1;
    for(i=1;i<=n;i++)
        g<<Lg[i]<<" ";
    return 0;
}