Cod sursa(job #3291364)

Utilizator stanciuvalentinStanciu-Tivlea Valentin Gabriel stanciuvalentin Data 4 aprilie 2025 14:32:24
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

struct muchii{
    int node, id;
};

int n,m,x,y,mm,scos[500200],pos[100200];
vector <muchii> edges[100200];
vector <int> rez;

void euler(int x){
    while(pos[x]<edges[x].size())
    {
        int i=pos[x];
        if(scos[edges[x][i].id]==0)
        {
            scos[edges[x][i].id]=1, mm--;
            euler(edges[x][i].node);
        }
        pos[x]++;
    }
    rez.push_back(x);
}

int32_t main()
{
    f>>n>>m, mm=m;
    for(int i=1; i<=m; i++)
        f>>x>>y, edges[x].push_back({y,i}), edges[y].push_back({x,i});
    for(int i=1; i<=n; i++)
        if(edges[i].size()&1)
            {g<<-1; return 0;}
    euler(1);
    if(mm)
        g<<-1;
    else
        for(auto it:rez)
            g<<it<<' ';
    return 0;
}