Cod sursa(job #1921551)

Utilizator Constantin.Dragancea Constantin Constantin. Data 10 martie 2017 13:11:00
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>
using  namespace std;
#define pb push_back

vector <int> V[100010];
int n,m,x,y,s,w,A[100010];
bool u[100010];
queue <int> Q;

int main(){
	ifstream cin ("bfs.in");
	ofstream cout ("bfs.out");
	cin>>n>>m>>s;
	for (int i=1; i<=m; i++){
		cin>>x>>y;
		if (x!=y && y!=s) V[x].pb(y);
	}
	u[s]=true; x=s;
	Q.push(s);
	while (!Q.empty()){
		w=A[x];
		x=Q.front();
		Q.pop();
		u[x]=true;
		for (int i=0; i<V[x].size(); i++){
			if (!u[V[x][i]]){
				Q.push(V[x][i]);
				A[V[x][i]]=w+1;
			}
		}
	}
	for (int i=1; i<=n; i++) cout<<(i==s?0:(A[i]==0?-1:A[i]))<<" ";
	return 0;
}