Cod sursa(job #2298265)

Utilizator HedeaMihneAHedea Mihnea HedeaMihneA Data 7 decembrie 2018 21:19:53
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s,v[100015],c[100015],t[100015],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) {
				v[vecin]=1;
				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;
}