Cod sursa(job #2079114)

Utilizator serban24Popovici Serban-Florin serban24 Data 30 noiembrie 2017 16:08:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

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

queue <int> q;
vector <int> A[100005];
int val[100005];

int BFS(int x){
	int i;

	q.push(x);
	int aux=x;

	while(!q.empty()){
		x=q.front();
		q.pop();
		for(i=0;i<A[x].size();i++){
			if(A[x][i]!=aux && val[A[x][i]]==0){
				val[A[x][i]]=val[x]+1;
				q.push(A[x][i]);
			}
		}
	}
}

int main(){
	int i,n,m,k,x,y;

	fin>>n>>m>>k;

	for(i=1;i<=m;i++){
		fin>>x>>y;
		if(x!=y)
			A[x].push_back(y);
	}

	BFS(k);

	for(i=1;i<=n;i++){
		if(val[i]==0 && i!=k)
			fout<<-1<<" ";
		else
			fout<<val[i]<<" ";
	}

    return 0;
}