Pagini recente » Cod sursa (job #3286598) | Istoria paginii clasament-arhiva-educationala | Cod sursa (job #3289568) | Istoria paginii utilizator/judy_k | Cod sursa (job #3291364)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
struct muchii{
int node, id;
};
int n,m,x,y,mm,scos[500200],pos[100200];
vector <muchii> edges[100200];
vector <int> rez;
void euler(int x){
while(pos[x]<edges[x].size())
{
int i=pos[x];
if(scos[edges[x][i].id]==0)
{
scos[edges[x][i].id]=1, mm--;
euler(edges[x][i].node);
}
pos[x]++;
}
rez.push_back(x);
}
int32_t main()
{
f>>n>>m, mm=m;
for(int i=1; i<=m; i++)
f>>x>>y, edges[x].push_back({y,i}), edges[y].push_back({x,i});
for(int i=1; i<=n; i++)
if(edges[i].size()&1)
{g<<-1; return 0;}
euler(1);
if(mm)
g<<-1;
else
for(auto it:rez)
g<<it<<' ';
return 0;
}