Pagini recente » Cod sursa (job #2449390) | Cod sursa (job #3280426)
#include <bits/stdc++.h>
#include <vector>
#include <queue>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
struct ura{
int nod, ind;
}aux;
queue<int>q;
vector <ura> lista[100001];
int viz[500001];
int cnt;
void dfs(int nr){
while(!lista[nr].empty())
{
ura auxi;
auxi=lista[nr].back();
lista[nr].pop_back();
if(viz[auxi.ind]==0){
viz[auxi.ind]=1;
dfs(auxi.nod);
}
}
q.push(nr);
}
int frecv[100001], imp;
int main()
{
int m,n,i,n1,n2;
in>>n>>m;
for(i=1;i<=m;++i)
{
in>>n1>>n2;
aux.nod=n1;
aux.ind=i;
lista[n2].push_back(aux);
aux.nod=n2;
lista[n1].push_back(aux);
++frecv[n1];
++frecv[n2];
}
for(i=1;i<=n && imp==0;++i)
if(frecv[i]%2==1)
++imp;
if(imp!=0)
{
out<<-1;
return 0;
}
dfs(1);
while(!q.empty())
{
out<<q.front()<<" ";
q.pop();
}
return 0;
}