Cod sursa(job #3318549)

Utilizator FaneMuntMunteanu Afanasii FaneMunt Data 28 octombrie 2025 13:09:58
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");



void BFS(int nod, vector<bool>& v, vector<vector<int>>& n,vector<int> &d,queue<int> &q) {
	v[nod] = true;
	for (int vecin : n[nod]) {
		if (not v[vecin]) {
			d[vecin] = d[nod] + 1;
			q.push(vecin);
		}
	}
}

int main()
{
	int n, m,s;
	fin >> n >> m>>s;
	int x, y;
	queue<int> q;
	vector<bool> visited(n+1,false);
	vector<int> distance(n + 1, -1);
	vector<vector<int>> noduri(n+1);
	for (int i = 0;i < m;i++)
	{
		fin >> x >> y;
		noduri[x].push_back(y);
		
	}
	q.push(s);
	distance[s] = 0;
	visited[s] = 0;
	while (not q.empty()) {
		BFS(q.front(),visited,noduri,distance,q);
		q.pop();
	}
	distance[s] = 0;
	for (int i = 1;i <= n;i++)
		fout << distance[i] << ' ';
	
}