Pagini recente » Cod sursa (job #2496923) | Cod sursa (job #2527654) | Cod sursa (job #717999) | Cod sursa (job #1172703) | Cod sursa (job #1426202)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream f("ciclueuler.in");
ofstream b("ciclueuler.out");
vector <int> g[100005];
vector <int> a;
void euler(int u)
{
int v;
unsigned int j;
// cout<<u;
while(g[u].size()!=0)
{
v=g[u].back();
g[u].pop_back();
for(j=0;j<g[v].size();j++)
if(g[v][j]==u)
{
g[v][j]=g[v][g[v].size()-1];
g[v].pop_back();
break;
}
euler(v);
}
a.push_back(u);
}
int main()
{
int n,m,x,y,ok=1;
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++)
if(g[i].size()%2!=0)
ok=0;
if(ok==0)
b<<ok-1;
else
{
euler(1);
for(int i=0;i<a.size();i++)
b<<a[i]<<" ";
}
}