Cod sursa(job #3339776)

Utilizator Sorin_GabrielGabara Sorin Gabriel Sorin_Gabriel Data 10 februarie 2026 08:35:41
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>
#define VMAX 100005
#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[VMAX];
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;
}