Cod sursa(job #3280426)

Utilizator Ruxxi7Ruxandra Gheorghe Ruxxi7 Data 26 februarie 2025 14:14:15
Problema Ciclu Eulerian Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
#include <vector>
#include <queue>

using namespace std;

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

struct ura{
    int nod, ind;
}aux;

queue<int>q;
vector <ura> lista[100001];

int viz[500001];
int cnt;

void dfs(int nr){
    while(!lista[nr].empty())
    {
        ura auxi;
        auxi=lista[nr].back();
        lista[nr].pop_back();
        if(viz[auxi.ind]==0){
            viz[auxi.ind]=1;
            dfs(auxi.nod);
        }
    }
    q.push(nr);
}

int frecv[100001], imp;

int main()
{
    int m,n,i,n1,n2;

    in>>n>>m;

    for(i=1;i<=m;++i)
    {
        in>>n1>>n2;
        aux.nod=n1;
        aux.ind=i;
        lista[n2].push_back(aux);
        aux.nod=n2;
        lista[n1].push_back(aux);
        ++frecv[n1];
        ++frecv[n2];
    }

    for(i=1;i<=n && imp==0;++i)
        if(frecv[i]%2==1)
            ++imp;

    if(imp!=0)
    {
        out<<-1;
        return 0;
    }

    dfs(1);

    while(!q.empty())
    {
        out<<q.front()<<" ";
        q.pop();
    }
    return 0;
}