Cod sursa(job #2163883)

Utilizator TooHappyMarchitan Teodor TooHappy Data 12 martie 2018 20:21:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
 
ifstream in("bfs.in");
ofstream out("bfs.out");

const int NMax = 1e5 + 5;
vector< vector< int > > G(NMax);
vector< bool > viz(NMax);
vector< int > distante(NMax);

void BFS(int nod) {
	queue< int > q; q.push(nod);
	viz[nod] = true;
	distante[nod] = 0;

	while(!q.empty()) {
		int temp = q.front(); q.pop();
		viz[temp] = true;

		for(auto vecini: G[temp]) {
			if(!viz[vecini]) {
				viz[vecini] = true;
				q.push(vecini);
				distante[vecini] = distante[temp] + 1;
			}
		}
	}
}

int main() {

	int n, m, sursa; in >> n >> m >> sursa;

	for(int i = 1; i <= m; ++i) {
		int x, y; in >> x >> y;
		G[x].push_back(y);
	}

	BFS(sursa);

	for(int i = 1; i <= n; ++i) {
		if(i != sursa && distante[i] == 0) {
			out << "-1 ";
		} else {
			out << distante[i] << " ";
		}
	}

    in.close(); out.close();
 
    return 0;
}