Pagini recente » Cod sursa (job #1522740) | Cod sursa (job #447543) | Cod sursa (job #204571) | Cod sursa (job #3244064) | Cod sursa (job #2813728)
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<vector<int> > a(100001);
map<int,int> aa;
int r[500001];
int n,m;
int p;
int ad(int k,int i){
for(int j=0;j<a[k].size();j++){
if(a[k][j] == i)
return j;
}
return -1;
}
void Euler(int k){
for(int i = 1 ; i <= n ; i ++){
map<int,int>::iterator it = aa.find(1e6 * k + i);
if(it != aa.end())
{
aa.erase(it);
map<int,int>::iterator it2 = aa.find(1e6 * i + k);
if(it2 != aa.end())
aa.erase(it2);
Euler(i);
}
}
r[++p] = k;
}
int main(){
in >> n >> m;
for(int i=1;i<=m;i++){
int x,y;
in >> x >> y;
aa.insert({x*1e6+y,1});
aa.insert({y*1e6+x,1});
a[x].push_back(y);
a[y].push_back(x);
}
Euler(1);
for(int i=1;i<=p;i++){
out << r[i] << " ";
}
return 0;
}