Cod sursa(job #2868519)

Utilizator BogdanDuminicaDuminica Bogdan BogdanDuminica Data 10 martie 2022 23:16:36
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <cassert>
#include <vector>
#include <stack>
using namespace std;

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

int n;

vector<int> G[500002], L;
vector<pair<int,int>> M;
vector<bool> elim;

int main()
{
    int i , j,muc;
    fin >> n>>muc;
    while(fin >> i >> j)
    {
        M.push_back({i,j});
        elim.push_back(false);
        G[i].push_back(M.size()-1);
        G[j].push_back(M.size()-1);
    }
    stack<int> S;
    S.push(1);
    while(! S.empty())
    {
        int k = S.top();
        if(G[k].size())
        {
            int x = G[k].back();
            G[k].pop_back();
            if(! elim[x])
            {
                elim[x] = 1;
                int p = M[x]. second;
                if(p == k)
                    p = M[x].first;
                S.push(p);
            }
        }
        else
        {
            L.push_back(k);
            S.pop();
        }

    }
    L.pop_back();
    for(auto k : L)
        fout << k << " ";
    return 0;
}