Cod sursa(job #2798099)

Utilizator IoanaLiviaPopescu15Ioana Livia IoanaLiviaPopescu15 Data 10 noiembrie 2021 21:52:00
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
using namespace std;

bool visited[50001];

ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");

class Graph {
public:

	vector <int> adiacenta[50001];
	deque <int> dq;
    void addEdge(int h, int t);
	void DFS(int vf);
	void ShowSolution();

};

void Graph::addEdge(int h,int t)
{
     adiacenta[h].push_back(t);
     adiacenta[t].push_back(h);
}

void Graph::DFS(int vf)
{
	visited[vf] = true;
	for(int i = 0; i < adiacenta[vf].size(); ++i)
		if (!visited[adiacenta[vf][i]])
			DFS(adiacenta[vf][i]);
    dq.push_front(vf);
}

void Graph::ShowSolution()
{
    for (int i=0; i < dq.size (); i++)
    {
        fout << dq[i] << " ";
    }

}



int main()
{
    long  N, M, X, Y;
    fin >> N >> M;

    Graph g;
    for (int i=0; i<M; i++)
    {
        fin >> X >> Y;
        g.addEdge(X,Y);

    }

    for (int i=1; i<=N; i++)
    {
        if (visited[i]==false)
        {
            g.DFS(i);
        }
    }

    g.ShowSolution();

    return 0;

}