Cod sursa(job #2644167)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 23 august 2020 17:07:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>

#include <vector>
#include <queue>

using namespace std;

int main(){
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

	int n, m, start, x, y;
	scanf("%d%d%d", &n, &m, &start);

	vector<vector<int>> arcs(n+1);
	vector<int> dist(n+1);
	queue<int> q;

	dist[start] = 1;

	for(int i=0; i<m ;++i)
	{
		scanf("%d%d", &x, &y);
		arcs[x].push_back(y);
	}

	q.push(start);

	while(q.size()) {
		x = q.front();
        q.pop();
		for(int i=0; i<arcs[x].size(); ++i)
			if (dist[arcs[x][i]] == 0) {
				dist[arcs[x][i]]= dist[x] + 1;
				q.push(arcs[x][i]);
			}
	}

	for(int i = 1; i<=n; ++i)
		printf("%d ", dist[i] - 1);

	return 0;
}