Pagini recente » Solutii preONI 2007, Runda 1 | Cod sursa (job #3160179) | Cod sursa (job #1564554) | Cod sursa (job #1004750) | Cod sursa (job #2762556)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 15;
const int INF = 1e8;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n, m;
bool seen[5 * MAXN];
vector <pair <int, int>> g[MAXN];
void dfs(int node){
while(g[node].size()){
int y = g[node].back().first;
int i = g[node].back().second;
g[node].pop_back();
if(!seen[i]){
seen[i] = 1;
dfs(y);
}
}
if(m) fout << node << ' ' , m--;
}
int main(){
fin >> n >> m;
for(int i = 1; i <= m; ++i){
int x, y; fin >> x >> y;
g[x].push_back({y, i});
g[y].push_back({x, i});
}
for(int i = 1; i <= n; ++i){
if(g[i].size() % 2){
fout << "-1";
return 0;
}
}
dfs(1);
return 0;
}