Cod sursa(job #2696715)

Utilizator Arsene_DenisaArsene Denisa Arsene_Denisa Data 16 ianuarie 2021 13:45:35
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include<fstream>
#include<vector>

using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<int>r;
vector<int>v[100001];
int n, m;
bool viz[500001];
int x[500001], y[500001];
void euler(int pz) {
    while(v[pz].size()) {
        int muchie;
        muchie=v[pz].back();
        v[pz].pop_back();
        if(viz[muchie]==0) {
                    viz[muchie]=1;
                    int vecin;
        if(x[muchie]==pz) {
                vecin=y[muchie];
        }
        else {
                vecin=x[muchie];
        }
        euler(vecin);
        }
    }
    r.push_back(pz);
}




int main() {

    fin>>n>>m;
    for(int i=1;i<=m;i++) {
            fin>>x[i]>>y[i];
            v[x[i]].push_back(i);
            v[y[i]].push_back(i);
    }
    int ok=1;
    for(int i=1;i<=n;i++) {
            if(v[i].size()%2!=0) {
                    ok=-1;
            }
    }
    if(ok==1) {
    euler(1);
    for(int i=0;i<r.size()-1;i++) {
            fout<<r[i]<<" ";
    }
    }
    else {
            fout<<"-1";
    }
    return 0;
}