Pagini recente » Cod sursa (job #2373695) | Cod sursa (job #2932369) | Cod sursa (job #1229316) | Cod sursa (job #1911095) | Cod sursa (job #3257773)
#include <bits/stdc++.h>
#define VMAX 100000
#define NMAX 7500
#define LOG 17
#define INF (long long)(1e9)
#define MOD 1999999973
#define BASE 23
#define ll long long int
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int,int>> adj[100005+1];
bool vis[500005+1];
vector<int> eulerCycle;
void dfs(int x)
{
while(!adj[x].empty())
{
int y = adj[x].back().first;
int id = adj[x].back().second;
adj[x].pop_back();
if(!vis[id])
{
vis[id]=1;
dfs(y);
}
}
eulerCycle.push_back(x);
}
void conex(int x)
{
vis[x]=1;
for(auto e : adj[x])
{
if(!vis[e.first])
{
conex(e.first);
}
}
}
int deg[NMAX+1];
int main()
{
int n,m;
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int x,y;
fin >> x >> y;
deg[x]++;
deg[y]++;
adj[x].push_back({y,i});
adj[y].push_back({x,i});
}
conex(1);
bool ok=1;
for(int i=1;i<=n;i++)
{
ok &= deg[i]%2==0;
ok &= vis[i];
}
if(!ok)
{
fout << -1;
return 0;
}
memset(vis,0,sizeof(vis));
dfs(1);
for(int i=0;i<eulerCycle.size()-1;i++)
{
fout << eulerCycle[i] << " ";
}
}