Cod sursa(job #2270667)

Utilizator r00t_Roman Remus r00t_ Data 27 octombrie 2018 12:32:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <deque>
#include <string>
#include <queue>

using namespace std;

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

queue<int>qu1;
vector<int>v1[100005];
int vf[100005];

void bfs(int x){
    qu1.push(x);
    vf[x]=1;
    while(qu1.size() != 0){
        for(int i=0;i<v1[x].size(); i++){
            if(vf[v1[x][i]] == 0){
                vf[v1[x][i]] = vf[x]+1;
                qu1.push(v1[x][i]);
            }
        }
        qu1.pop();
        x = qu1.front();

    }
}

int main()
{
    int n,m,s,a,b;
    fin>>n>>m>>s;
    for(int i=0; i<m; i++){
        fin>>a>>b;
            v1[a].push_back(b);
    }

    bfs(s);
    for(int i=1; i<=n; i++){
        if(vf[i]!=0)
            fout<<vf[i]-1<<' ';
        else
            fout<<-1<<' ';
    }

    return 0;
}