Pagini recente » Cod sursa (job #2726907) | Cod sursa (job #2051681) | Cod sursa (job #2310632) | Cod sursa (job #426107) | Cod sursa (job #3271885)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
int f[100005];
deque <int> q;
vector<int> vis;
vector<vector<pair<int,int>>> v;
void euler(int nod){
while(v[nod].size()){
int nxt = v[nod].back().first;
int edge= v[nod].back().second;
v[nod].pop_back();
if(vis[edge]==0){
vis[edge] = 1;
euler(nxt);
}
}
q.push_back(nod);
}
int main() {
int n,m,cnt=0,pare=0;
in>>n>>m;
v.resize(n+1);
vis.resize(m+1);
for(int i=1;i<=m;i++){
int x,y;
in>>x>>y;
v[x].push_back({y,i});
v[y].push_back({x,i});
if(f[y]==0)
cnt++;
if(f[x]==0)
cnt++;
f[y]++;
f[x]++;
}
for(int i=1;i<=n;i++){
if(f[i]%2==0)
pare++;
}
if(pare==n and cnt==n){
euler(1);
q.pop_back();
while(!q.empty()){
out<<q.front()<<" ";
q.pop_front();
}
}else
out<<-1;
}