Cod sursa(job #667474)

Utilizator S7012MYPetru Trimbitas S7012MY Data 23 ianuarie 2012 10:47:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <queue>
#include <vector>
#define DN 100005
using namespace std;

int n,m,s,dst[DN];
vector<int> gr[DN];
queue<int> c;

int main() {
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	f>>n>>m>>s;
	for(int i=1; i<=m; ++i) {
		int a,b;
		f>>a>>b;
		gr[a].push_back(b);
	}
	for(int i=1; i<=n; ++i) dst[i]=-1;
	dst[s]=0;
	for(c.push(s);c.size(); c.pop()) {
		int fr=c.front();
		for(int i=0; i<gr[fr].size(); ++i) {
			int fiu=gr[fr][i];
			if(-1==dst[fiu]) {
				dst[fiu]=dst[fr]+1;
				c.push(fiu);
			}
		}
	}
	for(int i=1; i<=n; ++i) g<<dst[i]<<' ';
	return 0;
}