Cod sursa(job #2008441)

Utilizator joy333Steluta Talpau joy333 Data 6 august 2017 16:04:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

int main()
{
   int n, m, s,nod_start, nod_end;
   fin>>n>>m>>s;
   vector<int> graph[100100];
   queue<int>q;
   vector<int>vizitat(n+1,0);
   vector<int>rezultat(n+1,0);
   //vector<vector<int>> v(n,)

   for(int i=0; i<m; i++ ){
        fin>>nod_start>>nod_end;
        graph[nod_start].push_back(nod_end);
   }
   q.push(s);
   vizitat[s]=1;
   rezultat[s]=0;
   while(!q.empty()){
        for(int i=0; i<graph[q.front()].size(); i++){
            int nod=graph[q.front()][i];
            if(vizitat[nod]==0){
                q.push(nod);
                vizitat[nod]=1;
                rezultat[nod]=rezultat[q.front()]+1;

            }
        }
        q.pop();

   }
   for(int i=1; i<=n;i++){
        if(vizitat[i]==0 ){
            fout<<-1<<" ";
        }
        else{
        fout<<rezultat[i]<<" ";
        }
   }
    return 0;
}