Cod sursa(job #2032106)

Utilizator pSergiuPatras Sergiu pSergiu Data 4 octombrie 2017 16:18:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define nmax 100001
#define conex 100001
vector <int> adiacenta[conex];
queue <int> q;
int dist[nmax];
int n,m,s;
ofstream fout("bfs.out");

void input(){
    ifstream fin("bfs.in");
    fin>>n>>m>>s;
    int x,y;
    while(fin>>x>>y){
        adiacenta[x].push_back(y);
    }
    fin.close();
}

void bfs(){
    while(!q.empty()){
        int nod = q.front();
        q.pop();
        for(auto i: adiacenta[nod]){
            if(dist[i] == 0 && i != s){
                dist[i] = dist[nod] + 1;
                q.push(i);
            }
        }

    }
}

int main()
{
    input();
    q.push(s);
    bfs();
    for(int i=1;i<=n;i++)
        if(dist[i] != 0)
            fout<<dist[i]<<" ";
        else if(i == s)
                fout<<0<<" ";
            else fout<<-1<<" ";
    return 0;
}