Cod sursa(job #2022089)

Utilizator TorTugaasdf asdf TorTuga Data 15 septembrie 2017 16:35:20
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>

using namespace std;

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

int N, M, S , x , y;
vector <int> a[100010];
queue <int> q;
int viz[100010];
int dist[100010];

void bfs(int nod)
{
	q.push(nod);
	viz[nod] = 1;
	dist[nod] = 0;
	while ( !q.empty() )
	{
		nod = q.front();
		q.pop();
		for (auto i : a[nod])
		{
			if (viz[i] == 0 && i != nod)
			{
				dist[i] = 1 + dist[nod];
				viz[i] = 1;
				q.push(i);
			}
		}
	}
}


int main()
{
	in >> N >> M >> S;
	for (int i = 0; i < M; i++)
	{
		in >> x >> y;
		a[x].push_back(y);
	}

	for (int i = 1; i <= N; i++)
	{
		dist[i] = -1;
	}

	bfs(S);

	for (int i = 1; i <= N; i++)
	{
		if (dist[i] == -1)
			out << -1 << " ";
		else
			out << dist[i] << " ";
	}
}