Pagini recente » Cod sursa (job #1428070) | Cod sursa (job #1783598) | Cod sursa (job #874282) | Cod sursa (job #2373376) | Cod sursa (job #3339778)
#include <bits/stdc++.h>
#define VMAX 100005
#define NMAX 500005
#define INF 1e11
//#define int long long int
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
vector<pair<int,int>> graf[VMAX]; // id,nod
bool luat_id[NMAX];
vector<int> ordine_ciclu;
void euler(int nod)
{
while(graf[nod].size())
{
auto it=graf[nod].back();
graf[nod].pop_back();
if(luat_id[it.first]==0)
{
luat_id[it.first]=1;
euler(it.second);
}
}
ordine_ciclu.push_back(nod);
}
signed main()
{
ios_base::sync_with_stdio(0);
int n,m,i,j,k,t,q,nr,minim,maxim,suma;
fin>>n>>m;
for(i=0;i<m;i++)
{
fin>>j>>k;
graf[j].push_back({i,k});
graf[k].push_back({i,j});
}
for(i=1;i<=n;i++)
{
if(graf[i].size()%2)
break;
}
if(i<=n)
{
fout<<"-1\n";
}
else
{
euler(1);
ordine_ciclu.pop_back();
for(i=0;i<ordine_ciclu.size();i++)
fout<<ordine_ciclu[i]<<' ';
fout<<'\n';
}
return 0;
}