Pagini recente » Cod sursa (job #395174) | Cod sursa (job #1085084) | Cod sursa (job #2970838) | Cod sursa (job #1144243) | Cod sursa (job #2158418)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 100001
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector < pair< int , int > > G[nmax];
int n,m,visited[nmax],k,sol[nmax],x,y;
void dfs(int node)
{
int muchie,vecin;
while(!G[node].empty())
{
vecin=G[node].back().first;
muchie=G[node].back().second;
G[node].pop_back();
if(!visited[muchie])
{
visited[muchie]=1;
dfs(vecin);
}
}
k++;
sol[k]=node;
}
int main()
{
fin>>n>>m;
for(int i =1 ; i <=m ;i++)
{
fin>>x>>y;
G[x].push_back(make_pair(y,i));
G[y].push_back(make_pair(x,i));
}
//verific grad
for(int i = 1; i <= n ;i++)
{
if(G[i].size()%2==1)
{
fout<<-1;
return 0;
}
}
dfs(1);
for(int i = 1; i < k ; i++)
fout<<sol[i]<<" ";
fout<<'\n';
}