Pagini recente » Cod sursa (job #141573) | Cod sursa (job #2528113) | Cod sursa (job #1797313) | Cod sursa (job #1544090) | Cod sursa (job #1793141)
#if 0
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Muchie
{
int a, b;
bool viz;
inline int other(int c)
{
return a == c ? b : a;
}
} mc[500005];
vector<int> v[100005];
int n, m;
vector<int> st;
#if 0
void euler(int n)
{
for(int i = 0; i < v[n].size(); i++)
{
if(mc[v[n][i]].viz)
continue;
mc[v[n][i]].viz = true;
euler(mc[v[n][i]].other(n));
}
st.push_back(n);
/*while(!v[i].empty())
{
int a = v[i].back();
v[i].pop_back();
v[a].erase(find(v[a].begin(), v[a].end(), i));
euler(a);
}*/
}
#endif
int main()
{
int i, a, b;
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 0; i < m; i++)
{
scanf("%d%d", &a, &b);
a--; b--;
mc[i].a = a;
mc[i].b = b;
mc[i].viz = false;
v[a].push_back(i);
v[b].push_back(i);
}
for(i = 0; i < st.size() - 1; i++)
printf("%d ", st[i] + 1);
return 0;
}
#endif
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v[100000];
int n, m;
vector<int> st;
bool viz[100000] = {0};
void euler(int i)
{
while(!v[i].empty())
{
int a = v[i].back();
v[i].pop_back();
v[a].erase(find(v[a].begin(), v[a].end(), i));
euler(a);
}
st.push_back(i);
}
void dfs(int i)
{
if(viz[i] == true)
return;
viz[i] = true;
for(int j = 0; j < v[i].size(); j++)
dfs(v[i][j]);
}
int main()
{
int i, a, b;
freopen("ciclueuler.in", "r", stdin);
freopen("ciclueuler.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i = 0; i < m; i++)
{
scanf("%d%d", &a, &b);
a--; b--;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(0);
for(i = 0; i < n; i++)
{
if(v[i].size() == 0 || v[i].size() % 2 != 0 || viz[i] == false)
{
printf("-1");
return 0;
}
}
euler(0);
for(i = 0; i < st.size() - 1; i++)
printf("%d ", st[i] + 1);
return 0;
}