Pagini recente » Cod sursa (job #1701899) | Cod sursa (job #434320) | Cod sursa (job #2528082) | Cod sursa (job #2522719) | Cod sursa (job #2365462)
#include<bits/stdc++.h>
using namespace std;
#define NMAX 100005
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
int n,m;
vector<pair<int,int> > adj[NMAX];
bool muchie[5*NMAX];
int grad[NMAX];
vector<int> ciclu;
void dfs(int v)
{
for(auto u:adj[v])
{
if(!muchie[u.second])
{
muchie[u.second]=1;
dfs(u.first);
}
}
ciclu.push_back(v);
}
int main()
{
fin>>n>>m;
for(int i=0;i<m;i++)
{
int v,u;
fin>>v>>u;
adj[v].push_back({u,i});
adj[u].push_back({v,i});
grad[v]++;
grad[u]++;
}
for(int i=1;i<=n;i++)
if(grad[i]%2)
{
fout<<-1;
return 0;
}
dfs(1);
for(int i=0;i<m;i++)
if(!muchie[i])
{
fout<<-1;
return 0;
}
ciclu.pop_back();
for(auto x:ciclu)
fout<<x<<' ';
return 0;
}