Cod sursa(job #2475996)

Utilizator DariusDCDarius Capolna DariusDC Data 17 octombrie 2019 21:04:54
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m;
int muc[500005];
int ans[500005];
int k;

vector <pair< int, int> > G[100005];

void dfs(int nod)
{
    while (G[nod].size() != 0)
    {
        int vecin = G[nod].back().first;
        int mc = G[nod].back().second;
        G[nod].pop_back();
        if (!muc[mc])
        {
            muc[mc] = 1;
            dfs(vecin);
        }
    }
    ans[++k] = nod;
}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= m; i++)
    {
        int a, b;
        fin >> a >> b;
        G[a].push_back({b, i});
        G[b].push_back({a, i});
    }
    for (int i = 1; i <= n; i++)
        if (G[i].size() % 2 == 1)
            return fout << "-1", 0;
    dfs(1);
    for (int i = 1; i < k; i++)
        fout << ans[i] << " ";
    return 0;
}