Cod sursa(job #2487735)

Utilizator thedorbulacovschittrter thedorbulacovschi Data 5 noiembrie 2019 18:20:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

vector <int> v[100005];
queue <int> q;
bool viz[100005];
int rez[100005];

int n,m,s;
int i,x,y;
int main()
{
    fin>>n>>m>>s;
    for(i=1;i<=m;i++){
        fin>>x>>y;
        if(x!=y){
            v[x].push_back(y);
        }
    }
    viz[s]=1;
    rez[s]=0;
    for(i=0;i<v[s].size();i++){
        rez[v[s][i]]=1;
        viz[v[s][i]]=1;
        q.push(v[s][i]);
    }
    while(!q.empty()){
        x=q.front();
        q.pop();
        for(i=0;i<v[x].size();i++){
            if(!viz[v[x][i]]){
                rez[v[x][i]]=rez[x]+1;
                viz[v[x][i]]=1;
                q.push(v[x][i]);
            }
        }
    }
    for(i=1;i<=n;i++){
        if(i==s){
            fout<<0<<" ";
        }
        else{
            if(rez[i]==0)
                fout<<-1<<" ";
            else
                fout<<rez[i]<<" ";
        }
    }
    return 0;
}