Cod sursa(job #2094184)

Utilizator virtualityBbbbbbbbbbbbbbbbbb virtuality Data 25 decembrie 2017 12:03:27
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<bits/stdc++.h>
using namespace std;
const int N=100020;
bool v[N];
int k[N];
vector <int> d, mda[N];
int main(){
	int m, n, sr;
	ifstream f("bfs.in");
	ofstream g("bfs.out");
	f>>n>>m>>sr;
	while(m--){
		int x, y;
		f>>x>>y;
		mda[x].push_back(y);
	}
	d.push_back(sr);
	int st=0, dr=0;
	v[sr]=1;
	while(st<=dr){
		int nod=d[st], j=mda[nod].size();
		for(int i=0;i<j;i++)if(!v[mda[nod][i]]){
			v[mda[nod][i]]=1;
			d.push_back(mda[nod][i]);
			k[mda[nod][i]]=k[nod]+1;
			dr++;
		}
		st++;
	}
	k[sr]=-2;
	for(int i=1;i<=n;i++)if(k[i]==0)k[i]=-1;
	k[sr]=0;
	for(int i=1;i<=n;i++)g<<k[i]<<' ';
	return 0;
}