Cod sursa(job #1378697)

Utilizator TheHolyArkCristian Petrescu TheHolyArk Data 6 martie 2015 13:46:29
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

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

int main()
{
	unsigned int n, m, i, j, nod1, nod2, k = 0;
	ifstream f("sortaret.in");
	f >> n >> m;
	vector< vector<int> > v(n + 1);
	vector<int>viz(n + 1, 0);
	vector<int> s(1);
	for (i = 0; i < m; i++)
	{
		f >> nod1 >> nod2;
		v[nod1].insert(v[nod1].begin(), nod2);
		v[nod2].insert(v[nod2].begin(), nod1);
	}
	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[i])
			{
				k++;
				dfs(v, viz, v[i][j],s);
			}
		}
	}
	ofstream g("sortaret.out");
	for (i = n; i>0; i--)
		g << s[i];
	f.close();
	g.close();
	system("PAUSE");
	return 0;
}