Cod sursa(job #2679010)

Utilizator Iustin01Isciuc Iustin - Constantin Iustin01 Data 29 noiembrie 2020 12:39:53
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
#define MAX 100005
using namespace std;

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

deque < int > g[MAX];
vector < pair < int , int > > l;
bitset < MAX > c;
vector < int > sol;

int n, m, x, y;

void Euler(int k){
    while(!g[k].empty()){
            int nivel = g[k].back();
            g[k].pop_back();
            if(!c[nivel]){
                c[nivel] = true;
                int vec = l[nivel].second;
                if(vec != k)
                    Euler(vec);
                else
                    Euler(l[nivel].first);
            }
        }
    sol.push_back(k);
}

int main(){
    in>>n>>m;
    while(m--){
        in>>x>>y;
        l.push_back({x, y});
        g[x].push_back(l.size() - 1);
        g[y].push_back(l.size() - 1);
    }
    Euler(1);

    for(int i = 0; i < sol.size() - 1; i++)
        out<<sol.at(i)<<" ";
}