Cod sursa(job #2678209)

Utilizator NeacsuMihaiNeacsu Mihai NeacsuMihai Data 28 noiembrie 2020 11:11:52
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
vector<pair<int, int>>v[100001];
int a[100001];
bool viz[100001];
int k;
void ciclu(int x)
{
    while(!v[x].empty())
    {
        int p=v[x].back().second;
        int vecin=v[x].back().first;
        v[x].pop_back();
        if(!viz[p])
        {
            viz[p]=1;
            ciclu(vecin);
        }
    }
    a[++k]=x;
}
int main()
{
    int n, m;
    int i, x, y;
    fin>>n>>m;
    for(i=1; i<=m; i++)
    {
        fin>>x>>y;
        v[x].push_back({y, i});
        v[y].push_back({x, i});
    }
    for(i=1; i<=n; i++)
    {
        if(v[i].size()%2==1) {fout<<-1; return 0;};
    }
    ciclu(1);
    for(i=1; i<k; i++) fout<<a[i]<<' ';
}