Cod sursa(job #3002570)

Utilizator robertanechita1Roberta Nechita robertanechita1 Data 14 martie 2023 21:29:49
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, st[500005], dr[500005], viz[500005], poz[100005];
vector<int>edg[100005];
vector<int>ans;

void Euler(int nod){
    int k = 1;
    while(poz[nod] < edg[nod].size()){
        k = edg[nod][poz[nod]];///prima muchie nevizitata din multimea lui nod
        poz[nod]++;
        if(!viz[k]){
            viz[k] = 1;
            if(st[k] == nod)
                Euler(dr[k]);
            else
                Euler(st[k]);
            ///Euler(st[k]+dr[k] - nod);

        }
    }
    ans.push_back(nod);
}

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= m; i++){
        fin >> st[i] >> dr[i];
        edg[st[i]].push_back(i);
        edg[dr[i]].push_back(i);
    }
    Euler(1);
    for(int i = ans.size() - 1; i > 0; i--)
        fout << ans[i] << " ";
    return 0;
}