Cod sursa(job #3339782)

Utilizator Furtuna_LucaFurtuna Luca Furtuna_Luca Data 10 februarie 2026 08:59:42
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>
#define NMAX 100002
#define MMAX 500002

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

struct muchii
{
    int x, index;
};

int n, m;
bool uz[MMAX];

vector <muchii> g[NMAX];
vector <int> sol;

void citire();
void euler(int x);

int main()
{
    int i;
    citire();
    for(i = 1; i <= n; i++)
        if(g[i].size()%2)
        {
            fout << -1;
            return 0;
        }

    for(i = 1; i <= n; i++)
        if(g[i].size())
        {
            euler(i);
            break;
        }

    for(i = 0; i < sol.size()-1; i++)
        fout << sol[i] << ' ';

    return 0;
}

void citire()
{
    int i, x, y;
    muchii mch;
    fin >> n >> m;
    for(i = 1; i <= m; i++)
    {
        fin >> x >> y;
        mch.x = y; mch.index = i;
        g[x].push_back(mch);
        mch.x = x;
        g[y].push_back(mch);
    }
}

void euler(int x)
{
    muchii mch;
    while(!g[x].empty())
    {
        mch = g[x].back();
        g[x].pop_back();

        if(!uz[mch.index])
        {
            uz[mch.index] = true;
            euler(mch.x);
        }

    }
    sol.push_back(x);
}