Cod sursa(job #2424438)

Utilizator MikeVMihai Vasilescu MikeV Data 22 mai 2019 23:57:34
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 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 <vector <int> > a;
vector <int> dist;
queue <int> q;

void BFS(int sursa)
{
	dist[sursa] = 1;
	q.push(sursa);
	while(!q.empty())
	{
		int node = q.front();
		for(unsigned int i = 0; i < a[node].size(); i ++)
		{
			int u = a[node][i];
			if (dist[u] == 0)
			{
				dist[u] = dist[node] + 1;
				q.push(u);
			}
		}
		q.pop();
	}
	for(int i = 0; i < n; i++)
		if(dist[i] > dist[sursa])
			out << "0\n";
		else
			out << dist[i] << "\n";
}

void add_edge(int i, int j)
{
	a[i].push_back(j);
	a[j].push_back(i);
}

int main()
{
	in>>n;
	in>>M;
	in>>S;
	a = vector <vector<int> > (n+1);
	
	for(int i = 0; i <= n; i++)
	{
		dist.push_back(0);
	}
	
	for(int i=0;i<M;i++){
		in >> x >> y;
		add_edge(x, y);
	}
	
	for(int i=0;i<n;i++)
		BFS(i);
	return 0;
}