Cod sursa(job #2813712)

Utilizator Danut200333Dumitru Daniel Danut200333 Data 7 decembrie 2021 09:26:07
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int,int> > v[100002];
int n,m,i,x,y,k,a[5000002];
bool viz[500002];
void ciclu(int x)
{
    int vecin,u;
    while(!v[x].empty())
    {
        vecin=v[x].back().first;
        u=v[x].back().second;
        v[x].pop_back();
        if(!viz[u])
        {
            viz[u]=1;
            ciclu(vecin);
        }
        a[++k]=x;
    }
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        v[x].push_back({y,i});
        v[y].push_back({x,i});
    }
    //fout<<"KYS";
    for(i=1;i<=n;i++)
    {
        if(v[i].size()%2!=0)
        {
            fout<<-1;
            return 0;
        }
    }
    ciclu(1);
    for(i=1;i<k;i++)fout<<a[i]<<" ";
    return 0;
}