Cod sursa(job #3286257)

Utilizator Alex_Mihai10Mihai Alex-Ioan Alex_Mihai10 Data 13 martie 2025 21:12:38
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");

int const MAX=5e5+5;
bool sters[MAX];
vector<pair<int,int>>adj[MAX];
int n,m;
int ind[MAX];
vector<int>rasp;
int grad[MAX];

void read(){
    fin>>n>>m;
    int i;
    for(i=1;i<=m;++i){
        int u,v;
        fin>>u>>v;
        adj[u].push_back({v,i});
        adj[v].push_back({u,i});
        ++grad[u];
        ++grad[v];
    }
}

void euler(int nod){
    while(ind[nod]<(int)adj[nod].size()){
        auto [vec,ed]=adj[nod][ind[nod]];
        ++ind[nod];
        if(!sters[ed]){
            sters[ed]=1;
            euler(vec);
        }
    }
    rasp.push_back(nod);
}

int main()
{
    read();
    euler(1);
    int i;
    for(i=1;i<=n;++i)
    if(grad[i]%2==1){
        fout<<-1;
        return 0;
    }
    for(i=1;i<=m;++i)
    if(!sters[i]){
        fout<<-1;
        return 0;
    }
    rasp.pop_back();
    for(auto x : rasp)
        fout<<x<<' ';
    return 0;
}