Cod sursa(job #1442857)

Utilizator TheHolyArkCristian Petrescu TheHolyArk Data 26 mai 2015 14:45:37
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

void bfs(vector< vector<int> > v, vector<int>& viz, int nod)
{
	viz[nod] = 1;
	for (int i = 0; i < (int)v[nod].size(); i++)
	if (viz[v[nod][i]] != 1)
		bfs(v, viz, v[nod][i]);
}

int main()
{
	int n, m, i,y,t, j, nod1, nod2, k = -1,s;
	ifstream f("bfs.in");
	f >> n >> m>>s;
	vector< vector<int> > v(n + 1);
	vector<int>viz(n + 1, 0);
	for (i = 0; i < m; i++)
	{
		f >> nod1 >> nod2;
		v[nod1].insert(v[nod1].begin(), nod2);
	}
	ofstream g("bfs.out");
	for (i = 1; i <= n; i++)
	{
		if (!v[i].size())
			v[i].insert(v[i].begin(), 0);
		for (j = 0; j < (int)v[i].size(); j++)
		{
			if (!viz[v[i][j]]&&v[i][j]!=s)
			{
				k++;
				bfs(v, viz, v[i][j]);
			}
		}
		g << k << " ";
		k = -1;
		for (y = 1; y <= n; y++)
		for (t = 0; t < (int)v[y].size(); t++)
			viz[v[y][t]] = 0;
	}
	f.close();
	g.close();
	return 0;
}