Cod sursa(job #2161488)

Utilizator rrobertBulgaru Robert rrobert Data 11 martie 2018 19:03:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

using namespace std;

queue<int> q;
vector<int> graph[100005];

int dst[100005];

void BFS(int source) {
	int u;

	dst[source]=0;
	q.push(source);

	while (!q.empty()) {
		u=q.front();

		for (int v=0;v<graph[u].size();v++) {
			if (dst[graph[u][v]]==-1) {
				dst[graph[u][v]]=dst[u]+1;
				q.push(graph[u][v]);
			}
		}

		q.pop();
	}
}

int main() {
	int n,m,s,x,y;

	ifstream f("bfs.in");
	ofstream g("bfs.out");

	f>>n>>m>>s;

	for (int i=0;i<m;i++) {
		f>>x>>y;
		graph[x].push_back(y);
	}

	memset(dst,-1,sizeof(dst));
	BFS(s);

	for (int i=1;i<=n;i++) 
		g<<dst[i]<<" ";

	return 0;
}