Cod sursa(job #2448289)

Utilizator red_devil99Mancunian Red red_devil99 Data 16 august 2019 15:11:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define maxn 100010
int N, M, Start;
int cost[maxn];
int verif[maxn];
std::vector<int> v[maxn];

void bfs(int nod){
	for(int i = 1; i <= N; i++){
		cost[i] = 0;
		verif[i] = 0;
	}
	queue<int> q;
	cost[nod] = 0;
	verif[nod] = 1;
	q.push(nod);
    while(!q.empty()){
    	int x = q.front();
    	q.pop();
    	for(auto it : v[x]){
    		if(!verif[it]){
               verif[it] = 1;
               cost[it] = cost[x] + 1;
               q.push(it);
    		}
    	}

    }

}

int main(){
	ifstream fin("bfs.in");
	ofstream fout("bfs.out");
	int x, y;
	fin >> N >> M >> Start;
	for(int i = 1; i <= M; i++){
		fin >> x >> y;
		v[x].push_back(y);
	}
	bfs(Start);
	for(int i = 1; i <= N; i++){
		if(cost[i] == 0 && i != Start){
			fout <<"-1 ";
		}else{
			fout << cost[i]<<" ";
		}
	}
	return 0;
}