Cod sursa(job #3002267)

Utilizator cberindeCodrin Berinde cberinde Data 14 martie 2023 16:35:41
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");

int N, M;
bool utilizat[500001];
int plec[500001], dest[500001];
vector<int> adi[100001];
stack<int> s;
vector<int> rez;

int main() {
    fin >> N >> M;
    for(int i = 1; i <= M; i++) {
        fin >> plec[i] >> dest[i];
        adi[plec[i]].push_back(i);
        adi[dest[i]].push_back(i);
    }

    //incepem cu nodul 1
    s.push(1);
    while(!s.empty()) {
        int crt = s.top();
        if(!adi[crt].empty()) {
            int muchie = adi[crt].back();
            adi[crt].pop_back();
            if(!utilizat[muchie]) {
                utilizat[muchie] = true;
                s.push((dest[muchie] == crt) ? plec[muchie] : dest[muchie]);
            }
        }
        else {
            rez.push_back(crt);
            s.pop();
        }
    }

    for(auto it : rez) {
        fout << it << " ";
    }
    return 0;
}