Cod sursa(job #1605225)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 18 februarie 2016 20:49:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100000;
const int INF = 0x7fffffff;

int n; int m; int start;

queue<int> q;

bitset<NMAX + 1> vis;

vector<int> g[NMAX + 1];

vector<int> dist(NMAX + 1, INF);

void solve(int start) {

	q.push(start);
	dist[start] = 0;
	vis[start] = true;

	for(; q.empty() == false ; q.pop() ) {

		int node = q.front();

		for(int x : g[node]) 
			if(vis[x] == false)
				q.push(x), vis[x] = true, dist[x] = dist[node] + 1;
	}
}

int main() {

	fin >> n >> m >> start;

	while(m--) {

		int x; int y;
		fin >> x >> y;

		g[x].push_back(y);
	}

	solve(start);

	for(int i = 1; i <= n; ++i)
		dist[i] == INF ? fout << -1 << ' ' : fout << dist[i] << ' ' ; 

	return 0;
}