Cod sursa(job #2928634)

Utilizator NFJJuniorIancu Ivasciuc NFJJunior Data 23 octombrie 2022 15:47:30
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<bits/stdc++.h>
using namespace std;
const int Max = 1e5;
ifstream f("bfs.in");
ofstream g("bfs.out");
#define cin f
#define cout g

int n, m, s;
pair<int, int> visited[Max];
vector<int> adj[Max];

void BFS(int k)
{
	queue<int> Q;
	
	Q.push(k);
	visited[k].first = 1;
	visited[k].second = 0;

	while(! Q.empty())
	{
		int temp = Q.front();
		Q.pop();
		
		for(auto it : adj[temp])
			if(visited[it].first == 0)
			{
				Q.push(it);
				visited[it].first = 1;
				visited[it].second = visited[temp].second + 1;
			}
	}
	for(int i = 1; i <= n; i ++)
		if(visited[i].first == 0)
			cout<<"-1 ";
		else
			cout<<visited[i].second<<' ';
}

int main()
{
	cin >> n >> m >> s;
	for(int i = 1; i <= m; i ++)
	{
		int x, y;
		cin >> x >> y;
		adj[x].push_back(y);
	}
	for(int i = 1; i <= n; i ++)
		sort(adj[i].begin(), adj[i].end());
	BFS(s);
	return 0;
}