Cod sursa(job #2696696)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 16 ianuarie 2021 13:34:34
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
vector<int>v[100001];
int a[500001],b[500001],viz[500001];
int n,m,ok=0;
void citire(){
    in>>n>>m;
    for(int i=1;i<=m;i++){
        in>>a[i]>>b[i];
        v[a[i]].push_back(i);
        v[b[i]].push_back(i);
    }
}
int euler(int poz){
    while(v[poz].size()!=0){
        int curent=v[poz].size()-1;
        curent=v[poz][curent];
        v[poz].pop_back();
        if(viz[curent])
            continue;
        viz[curent]=1;
        int vecin=(poz^a[curent]^b[curent]);
        euler(vecin);
    }
    if(ok)
        out<<poz<<" ";
    ok=1;
}
int main(){
    citire();
    for(int i=1;i<=n;i++){
        if(v[i].size()%2==1){
            out<<-1;
            return 0;
        }
    }
    euler(1);
    return 0;
}