Pagini recente » Cod sursa (job #2467320) | Cod sursa (job #3196946) | Cod sursa (job #962242) | Cod sursa (job #806828) | Cod sursa (job #2696698)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector <int> v[1000001];
vector <int> ans;
int a[500001],b[500001],ver[500001];
int ok;
void euler(int poz)
{
while(v[poz].size())
{
int m_cur=v[poz].back();
v[poz].pop_back();
if(ver[m_cur])
continue;
ver[m_cur]=1;
int vecin;
if(a[m_cur]==poz)
vecin=b[m_cur];
else
vecin=a[m_cur];
euler(vecin);
}
ans.push_back(poz);
}
int main()
{
int n,m,i;
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>a[i]>>b[i];
v[a[i]].push_back(i);
v[b[i]].push_back(i);
}
for(i=1;i<=n;i++)
{
if(v[i].size()%2==1)
{
out<<"-1";
return 0;
}
}
euler(1);
for(auto it:ans)
out<<it<<" ";
return 0;
}