Pagini recente » Cod sursa (job #546970) | Cod sursa (job #1250829) | Cod sursa (job #3139883) | Cod sursa (job #2146337) | Cod sursa (job #2168966)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector < pair < int , int > > lista_adiacenta[100003];
bool viz[100003*5];
int n,m,cnt,sol[100003*5];
void euler(int nod)
{
int a,b;
while(!lista_adiacenta[nod].empty())
{
a=lista_adiacenta[nod].back().second;
b=lista_adiacenta[nod].back().first;
lista_adiacenta[nod].pop_back();
if (!viz[a])
{
viz[a]=1;
euler(b);
}
}
sol[++cnt]=nod;
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
int x,y;
f>>x>>y;
lista_adiacenta[y].push_back({x,i});
lista_adiacenta[x].push_back({y,i});
}
for(int i=1;i<=n;++i)///verific sa am gradurile tuturor nodurilor pare
if(lista_adiacenta[i].size()%2)
{
g<<"-1";
exit(0);
}
euler(1);
for(int i=1;i<cnt;++i)
g<<sol[i]<<" ";
return 0;
}