Cod sursa(job #3202784)

Utilizator Ionut10Floristean Ioan Ionut10 Data 12 februarie 2024 11:34:20
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MMAX = 500000;
const int NMAX = 100000;

typedef pair<int,int> pii;

int n, m;
vector<int> sol;
bool viz[MMAX + 1];
vector<pii> adj[NMAX + 1];

void dfs(int nod)
{
    while(!adj[nod].empty())
    {
        pii i = adj[nod].back();
        adj[nod].pop_back();
        if(!viz[i.second])
        {
            viz[i.second] = 1;
            dfs(i.first);
        }
    }
    sol.push_back(nod);
}
int main()
{

    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int u, v;
        fin >> u >> v;
        adj[u].push_back({v, i});
        adj[v].push_back({u, i});
    }
    for(int i=1;i<=n;i++)
        if(adj[i].size()%2==1)
    {
        fout<<-1;
        return 0;
    }
    dfs(1);
    sol.pop_back();
    for(int i:sol)
        fout<<i<<' ';
    return 0;
}