Pagini recente » Cod sursa (job #1443029) | Cod sursa (job #1463683)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
#define Nmax 100013
class cell {
public :
int node;
cell *prev;
cell (int a, cell *l) {node=a; prev=l;};
};
class UndirectedGraph {
private :
cell *adj[Nmax];
bool used[Nmax];
public :
vector <int> TopSort;
void dfs(int node){
used[node]=1;
for (cell *it = adj[node];it;it=it->prev)
if (!used[it->node])
dfs(it->node);
TopSort.push_back(node);
}
void addEdge(int a,int b){
cell *aux = new cell(b,adj[a]); adj[a]=aux;
aux = new cell(a,adj[b]); adj[b]=aux;
}
} Graph;
int n,m,a,b;
int main(void) {
cin>>n>>m;
while(m--) {
cin>>a>>b;
Graph.addEdge(a,b);
}
for (int i=1;i<=n;++i)
Graph.dfs(i);
for (int i=Graph.TopSort.size()-1;i>=0;--i)
cout<<Graph.TopSort[i]<<" ";
return 0;
}