Cod sursa(job #2977092)

Utilizator PHOSSESSEDProsie Radu-Teodor PHOSSESSED Data 10 februarie 2023 19:16:27
Problema Ciclu Eulerian Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<vector>
#include<algorithm>
#include<queue>
#include<stack>
using namespace std;

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

const int NMAX = 1e5 + 1;

vector<pair<int,int>> vecini[NMAX];

bool folosit[5 * NMAX];

int grad[NMAX];

void euler(int nod)
{
    for(auto it : vecini[nod])
        {
            if(folosit[it.second])
                continue;

            folosit[it.second] = 1;
            euler(it.first);
        }

    if(nod != 1) cout << nod << " ";
}

int main()
{

    int n,m,a,b;
     cin >> n >> m;
     for(int i = 1; i <= m ; i++)
        {
            cin >> a >> b;
            vecini[a].push_back({b,i});
            vecini[b].push_back({a,i});
            grad[a]++,grad[b]++;
        }

    for(int i = 1; i <= n ; i++)
        {
            if(grad[i] % 2 != 0)
                {
                    cout << -1;
                    return 0;
                }
        }

    cout << 1 << " ";
    euler(1);

}