Cod sursa(job #1028025)

Utilizator BartieSocaciu Vlad Bartie Data 13 noiembrie 2013 16:07:37
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

vector<int> V[100001];
int k,a,b,n,m,nr_drum[100001],nod,st=1,dr=1,coada[100001];

int main()
{
    fin>>n>>m>>nod;
    for(;m;m--){
        fin>>a>>b;
        if(a!=b)
            V[a].push_back(b);
    }
    coada[dr]=nod;dr++;
    while(st<dr){
        k=coada[st];
        for(int i=0;i<V[k].size();i++){
            if(!nr_drum[V[k][i]]){
                coada[dr]=V[k][i];dr++;
                nr_drum[coada[dr-1]]=nr_drum[k]+1;
            }
        }
        st++;
    }
    for(int i=1;i<n;i++)
        if(nr_drum[i]==0)
            nr_drum[i]=-1;
    nr_drum[nod]=0;
    for(int i=1;i<=n;i++)
        fout<<nr_drum[i]<<" ";
    return 0;
}