Pagini recente » Cod sursa (job #2836127) | Cod sursa (job #1973335) | Cod sursa (job #3131523) | Cod sursa (job #3185473) | Cod sursa (job #2255413)
#include<bits/stdc++.h>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
bitset<50000005>viz;
vector< pair<int,int> >G[500005];
int n,ras[5000005],m,k;
void citire();
void euler(int node);
int main()
{
citire();
for(int i=1;i<=n;++i)
{
if(G[i].size()&1)
{
g<<-1;
return 0;
}
}
euler(1);
for(int i=1;i<k;++i)
g<<ras[i]<<' ';
}
void citire()
{
f>>n>>m;
for(int x,y,i=1;i<=m;++i)
{
f>>x>>y;
G[x].push_back(make_pair(y,i));
G[y].push_back(make_pair(x,i));
}
}
void euler(int node)
{
int poz,vecini;
while(!G[node].empty())
{
poz=G[node].back().second;
vecini=G[node].back().first;
G[node].pop_back();
if(!viz[poz])
{
viz[poz]=1;
euler(vecini);
}
}
ras[++k]=node;
}