Cod sursa(job #3286203)

Utilizator myrra678ana ana myrra678 Data 13 martie 2025 20:21:56
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

struct muchie
{
    int y,i;
};

int n,m;
queue <int>q;
vector <muchie>lista[100001];
int viz[500001],f[100001];

void dfs(int nod)
{
    if(f[nod]>0)
    for(auto i:lista[nod])
    {
        if(viz[i.i]==0 and f[nod]>0 and f[i.y]>0)
        {
            f[nod]--;
            f[i.y]--;
            viz[i.i]=1;
            dfs(i.y);
        }
    }
    q.push(nod);
}

int main()
{
    int x,y,ok=0;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y;
        f[x]++;
        f[y]++;
        lista[x].push_back({y,i});
        lista[y].push_back({x,i});
    }
    
    for(int i=1;i<=n and ok==0;i++)
        ok+=(f[i]%2);
    if(ok!=0)
        cout<<-1;
    else
    {
        dfs(1);
        while(!q.empty())
        {
            cout<<q.front()<<" ";
            q.pop();
        }
    }
    
    return 0;
}