Cod sursa(job #2373281)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 7 martie 2019 12:58:03
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#define Dim 100007
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int N,M,a,b,dx[Dim],Ans[5*Dim],cnt;
bool viz[5*Dim];

vector < pair<int,int> > V[Dim];

void Euler(int nod)
{
    int poz,vecin;
    while(!V[nod].empty())
    {
        poz=V[nod].back().second;
        vecin=V[nod].back().first;
        V[nod].pop_back();
        if(!viz[poz])
        {
            viz[poz]=1;
            Euler(vecin);
        }
    }
    Ans[++cnt]=nod;
}

int main()
{
    f>>N>>M;
    for(int i=1;i<=M;i++)
    {
        f>>a>>b;
        dx[a]++;
        dx[b]++;
        V[a].push_back({b,i});
        V[b].push_back({a,i});
    }
    for(int i=1;i<=N;i++)
    if(dx[i]%2)
    {
        g<<-1;
        return 0;
    }
    Euler(1);
    for(int i=1;i<cnt;i++) g<<Ans[i]<<" ";
    return 0;
}