Cod sursa(job #3313791)

Utilizator CimpoesuFabianCimpoesu Fabian George CimpoesuFabian Data 6 octombrie 2025 17:17:15
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");

int n, m, X[500001], Y[500001], grad[100001], viz[500001];
int e[100001], len;
vector <int> G[500001], L[100001];

void Euler(int k)
{
    for (auto i : L[k])
        if (viz[i] == 0)
    {
        viz[i] = 1;
        Euler(X[i] + Y[i] - k);
    }
    e[++len] = k;
}

int main()
{
    int p, i, j;
    fin >> n >> m;
    for (p = 1 ; p <= m ; p++)
    {
        fin >> i >> j;
        ++grad[i]; ++grad[j];
        X[p] = i; Y[p] = j;
        L[i].push_back(p);
        L[j].push_back(p);
    }
    for (i = 1 ; i <= n ; i++)
        if (grad[i] != 0 && grad[i] % 2 != 0)
            fout << -1;
    for (i = 1 ; i <= n && grad[i] == 0 ; i++)
        ;
    Euler(i);
    for (i = 1 ; i <= len ; i++)
        fout << e[i] << " ";
}