Cod sursa(job #3348915)

Utilizator Commander_XDunel Stefan-Octavian Commander_X Data 24 martie 2026 17:19:16
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <vector>
#include <queue>

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

using namespace std;

vector<vector<pair<int,int>>> G;
queue<int> Q;
vector<bool> VizM;
int N,M,cnt;

void read()
{
    fin >> N >> M;

    G.resize(N+1);
    VizM.resize(M+1,0);

    cnt = M;

    int x,y;
    for(int i = 1; i <= M; ++i)
    {
        fin >> x >> y;
        G[x].push_back({y,i});
        G[y].push_back({x,i});
    }
}
void DFSE(int start)
{
    for(auto vecin : G[start])
    {
        if(!VizM[vecin.second])
        {
            VizM[vecin.second] = 1;
            --cnt;
            //fout << start << ' ' << vecin.first << '\n';
            DFSE(vecin.first);
        }
    }
    Q.push(start);
}
int main()
{
    ios::sync_with_stdio(false);
    fin.tie(0);

    read();
    DFSE(1);

    if(cnt != 0)
        fout << -1;
    else
        while(Q.size() != 1)
        {
            fout << Q.front() << ' ';
            Q.pop();
        }
}