Pagini recente » Cod sursa (job #1466410) | Cod sursa (job #1642112) | Cod sursa (job #807499) | Cod sursa (job #807501) | Cod sursa (job #2571311)
#include <bits/stdc++.h>
#define NMAX 100100
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
struct tip{int x; int m;};
vector <tip>g[NMAX];
bool uz[5*NMAX];
int n,m;
vector<int> sol;
void citire();
void verif();
void euler(int k);
void afis();
int main()
{citire();
verif();
euler(1);
afis();
return 0;
}
void citire()
{int x,y,i;
fin>>n>>m;
for(i=1;i<=m;i++)
{fin>>x>>y;
g[x].push_back({y,i});
g[y].push_back({x,i});
}
}
void verif()
{
int i;
for(i=1;i<=n;i++)
if( g[i]. size() %2 )
{ fout<<-1;exit(0);}
}
void euler(int k)
{
int i;
while(!g[k].empty())
{
tip a=g[k].back();
g[k].pop_back();
if(!uz[a.m])
{
uz[a.m]=1;
euler(a.x);
}
}
sol.push_back(k);
}
void afis()
{
int i;
for(i=0;i<sol.size()-1;i++)
fout<<sol[i]<<" ";
}