Pagini recente » Cod sursa (job #678281) | Cod sursa (job #2520134) | Cod sursa (job #2162175) | Cod sursa (job #1586732) | Cod sursa (job #2468698)
#include <iostream>
#include <fstream>
#include <vector>
const int MAXN = 100000 + 5;
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int>graf[MAXN];
vector<pair<int,int> >solutie;
bool viz[MAXN];
int n,m;
bool eulerian = false;
void afis(){
for(auto muchie : solutie)
out<<muchie.first<<" "<<muchie.second<<" ";
}
void dfs(int nod){
if(eulerian)
return;
if(solutie.size() == n - 1){
afis();
eulerian = true;
return;
}
int curent;
for(int i = 0; i < graf[nod].size(); i++){
curent = graf[nod][i];
if(!viz[curent]){
viz[curent] = true;
solutie.push_back({nod,curent});
dfs(curent);
viz[curent] = false;
solutie.pop_back();
}
}
}
int main()
{
in>>n>>m;
for(int i = 1; i <= m; i++){
int x,y;
in>>x>>y;
graf[x].push_back(y);
}
dfs(1);
if(!eulerian)
out<<-1;
return 0;
}