Pagini recente » Cod sursa (job #1031069) | Cod sursa (job #78643) | Cod sursa (job #1993091) | Cod sursa (job #1907121) | Cod sursa (job #3000821)
#include <bits/stdc++.h>
#pragma optimization_level 3
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx")
#pragma GCC optimize("Ofast")//Comment optimisations for interactive problems (use endl)
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")
using namespace std;
typedef long long ll;
#define FOR(WHATEVER) for(int i = 1; i <= WHATEVER; ++ i)
/// INPUT / OUTPUT
const string problem = "ciclueuler";
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");
struct graph
{
int node, edge;
};
/// GLOBAL VARIABLES
const ll NMAX = 1e5 + 5, MOD = 1e9 + 7, INF = 1e9;
int n, m;
bool viz[NMAX];
vector<int>ans;
vector<graph>g[NMAX];
/// SOLUTION
inline void dfs(int start)
{
stack<int>st;
st.push(start);
while(!st.empty())
{
int node = st.top();
st.pop();
if(!g[node].size())
{
ans.push_back(node);
}
else
{
int new_node = g[node].back().node;
int new_edge = g[node].back().edge;
g[node].pop_back();
st.push(node);
if(!viz[new_edge])
{
viz[new_edge] = 1;
st.push(new_node);
}
}
}
}
/// READING THE INPUT
int main()
{
ios::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
fin >> n >> m;
for(int i = 1; i <= m; ++ i)
{
int node1, node2;
fin >> node1 >> node2;
g[node1].push_back({node2, i});
g[node2].push_back({node1, i});
}
for(int i = 1; i <= n; ++ i)
{
if(g[i].size()%2)
{
fout << -1;
return 0;
}
}
dfs(1);
ans.pop_back();
for(auto x : ans)
fout << x << ' ';
}