Cod sursa(job #3004033)

Utilizator biancaa_ungureanuUngureanu Bianca-Maria biancaa_ungureanu Data 16 martie 2023 09:03:14
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

const int NMAX=100001;

struct muchie
{
    int x,y;
};

vector <muchie> G[NMAX];
vector <int> L;
bool viz[NMAX*5];

int n,m;

void euler(int v)
{
    for (int i=0;i<G[v].size();i++)
    {
        if (viz[G[v][i].y]==0)
        {
            viz[G[v][i].y]=1;
            euler(G[v][i].x);
        }
    }
    L.push_back(v);
}

void citire()
{
    int x,y;
    f>>n>>m;
    for (int i=1;i<=m;i++)
        {
            f>>x>>y;
            G[x].push_back({y,i});
            G[y].push_back({x,i});
        }
}

int verif()
{
    for (int i=1;i<=n;i++)
        if (G[i].size()%2!=0)
            return -1;
    return 0;
}

int main()
{
    citire();
    int x=verif();
    if (x)
        g<<x;
    else
    {
        euler(1);
        for (int i=0;i<L.size()-1;i++)
        g<<L[i]<<' ';
    }
    return 0;
}