Cod sursa(job #2357003)

Utilizator baltoi.teodorTeodor Baltoi baltoi.teodor Data 27 februarie 2019 08:26:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb

#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[NMAX];
vector <int> Q;
int D[NMAX],Prez[NMAX];
int p,u;
void BFS(int x)
{
    int i,nc;
    Q.push_back(x);
    p=0;
    u=0;

    D[x]=0;
    Prez[x]=1;
    while(p<=u)
    {
        nc=Q[p];
        p++;
        for(auto i : v[nc])
        {
            if(Prez[i]==0) Prez[i]=1,D[i]=D[nc]+1,Q.push_back(i),u++;
        }
    }
}
int main()
{
    int n,m,S,i,x,y;
    fin>>n>>m>>S;
    for(i=1;i<=m;++i)
    {
        fin>>x>>y;
        v[x].push_back(y);
    }
    BFS(S);
    for(i=1;i<=n;++i,fout<<" ")
        if(Prez[i]==1)fout<<D[i];
        else fout<<"-1";
    return 0;
}