Cod sursa(job #1934044)

Utilizator Sergiu1256Ionita Sergiu1256 Data 21 martie 2017 08:45:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
//ionita
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
struct ndL{
	unsigned int nd;
	unsigned int len;
};
list<unsigned int> adL[100001];
vector<int> lens(100001,-1);
unsigned int n,m,st;
int main(){
	fin >> n >> m >> st;
	for(int i = 0 ; i < m; i++){
		unsigned int src,dest;
		fin>>src>>dest;
		adL[src].push_back(dest);
	}
	queue<ndL> bf;
	ndL stN = (ndL){st,0};
	lens[st]=0;
	bf.push(stN);
	for(;!bf.empty();bf.pop())
		for(auto it=adL[bf.front().nd].begin(); it!=adL[bf.front().nd].end(); it++)
		                                                                        	if(lens[*it]==-1)
			                                                                             			bf.push((ndL){*it,bf.front().len+1}),
																											lens[*it]=bf.front().len+1;
	for(int i = 1; i <= n; i++)	fout << lens[i] << ' ';
	fout << '\n';
	return 0;
}