Cod sursa(job #2079277)

Utilizator IsacLucianIsac Lucian IsacLucian Data 30 noiembrie 2017 21:27:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
const int Nmax=100005;
vector<int>L[Nmax];
int n,m,S,dist[Nmax];
queue<int>Q;
bool viz[Nmax];
void BFS()
{
    Q.push(S);
    viz[S]=true;
    while(!Q.empty())
    {
        int x=Q.front();
        Q.pop();
        for(auto i:L[x])
            if(!viz[i])
        {
            dist[i]=dist[x]+1;
            viz[i]=true;
            Q.push(i);
        }
    }
}
int main()
{
    fin>>n>>m>>S;
    while(m--)
    {
        int x,y;
        fin>>x>>y;
        L[x].push_back(y);
    }
    BFS();
    for(int i=1;i<=n;i++)
        if(i!=S && !dist[i])
            fout<<"-1 ";
    else fout<<dist[i]<<" ";
    fin.close();
    fout.close();
    return 0;
}