Cod sursa(job #2642826)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 17 august 2020 12:55:45
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<bits/stdc++.h>
#define god dimasi5eks
#pragma GCC optimize("O3")
#define fi first
#define se second
#define pb push_back
#define pf push_front
 
#define fisier 1
 
using namespace std;
 
typedef long long ll;
 
const int mod = 1000000007;
const double dancila = 3.14159265359; // PI 
const double eps = 1e-9;
 
int n, m, s;
vector<int> v[200002];
int dist[200002];
bool viz[200002];
int main()
{
	#ifdef fisier
		ifstream cin("bfs.in");
		ofstream cout("bfs.out");
	#endif
	
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin >> n >> m >> s;
	for(int i = 1; i <= m; ++i)
	{
		int a, b;
		cin >> a >> b;
		v[a].pb(b);
	}
	deque<int> d;
	d.pb(s);
	viz[s] = 1;
	while(!d.empty())
	{
		int nod = d[0];
		d.pop_front();
		for(int i = 0; i < v[nod].size(); ++i)
		{
			int vecin = v[nod][i];
			if(!viz[vecin])
			{
				dist[vecin] = dist[nod] + 1;
				viz[vecin] = 1;
				d.pb(vecin);
			}
		}
	}
	for(int i = 1; i <= n; ++i)
		if(!viz[i])
			cout << -1 << " ";
		else
			cout << dist[i] << " ";
	return 0;
}