Cod sursa(job #2282366)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 13 noiembrie 2018 17:54:09
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,v[100010],c[100010],t[100010],cnt,x,y;
vector<int> L[100010];
void bfs(int start) {
	v[start]=1; c[1]=start;
	int p=1,u=1;
	while (p<=u) {
		int nod=c[p];
		for (int i=0;i<L[nod].size();i++) {
			int vecin=L[nod][i];
			if (v[vecin]==0) {
				c[++u]=vecin;
				t[vecin]=nod;
			}
		}
		p++;
	}
}
int main() {
	fin>>n>>m>>s;
	while (m--) {
		fin>>x>>y;
		L[x].push_back(y);
	}
	bfs(s);
	for (int i=1;i<=n;i++) {
		if (i==s)
			fout<<"0 ";
		else {
			cnt=0; int j=i;
			while (t[j]!=0) {
				cnt++;
				if (t[j]==s)
					break;
				j=t[j];
			}
			if (t[j]!=0)
				fout<<cnt<<" ";
			else
				fout<<"-1 ";
		}
	}
	return 0;
}