Pagini recente » Cod sursa (job #1590241) | Cod sursa (job #2948647) | Cod sursa (job #1770476) | Cod sursa (job #479039) | Cod sursa (job #2798099)
#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;
}