Cod sursa(job #3298445)

Utilizator Victor5539Tanase Victor Victor5539 Data 30 mai 2025 10:07:16
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
#include <queue>

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

const int MAX=1e5;
int n,m,i,nod1,nod2,degree[MAX+5],nr;
set <int> s[MAX+5];
bool sol=1,viz[MAX+5];
queue <int> q;

int main()
{
    fin>>n>>m;

    while (m)
    {
        fin>>nod1>>nod2;
        degree[nod1]++;
        degree[nod2]++;

        s[nod1].insert(nod2);
        s[nod2].insert(nod1);
        m--;
    }

    for (i=1; i<=n; i++)
        if (degree[i]%2==1)
            sol=0;

    viz[1]=1;
    q.push(1);
    nr=1;

    while (!q.empty())
    {
        nod1=q.front();
        q.pop();

        for (auto x: s[nod1])
            if (!viz[x])
            {
                viz[x]=1;
                nr++;
                q.push(x);
            }
    }

    if (nr!=n)
        sol=0;

    if (sol==0)
        fout<<-1;
    return 0;
}