Pagini recente » Cod sursa (job #2668806) | Cod sursa (job #2627904) | Cod sursa (job #2911062) | Borderou de evaluare (job #1778049) | Cod sursa (job #2540752)
#include <bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector <int> G[100004];
vector <int> :: iterator it;
list <int> Q;
int n,m,x,y,sol;
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
for(int i=1;i<=n;i++)
{
int l=G[i].size();
if(l%2==1)
{
g<<-1<<'\n';
return 0;
}
}
Q.push_front(1);
while(!Q.empty())
{
int p=Q.front();
if(G[p].empty())
{
if(sol<m)
g<<p<<" ";
sol++;
Q.pop_front();
}
else
{
int last=G[p].back();
G[p].pop_back();
Q.push_front(last);
for(it=G[last].begin(); it!=G[last].end(); it++)
{
if(*it==p)
{
G[last].erase(it);
break;
}
}
}
}
return 0;
}