Cod sursa(job #3348916)

Utilizator Commander_XDunel Stefan-Octavian Commander_X Data 24 martie 2026 17:22:31
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>

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

using namespace std;

vector<vector<pair<int,int>>> G;
vector<int> ans;
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;
            //fout << start << ' ' << vecin.first << '\n';
            DFSE(vecin.first);
        }
    }
    ans.push_back(start);
}
int main()
{
    ios::sync_with_stdio(false);
    fin.tie(0);

    read();

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

    DFSE(1);

    for(int i = 0; i < M; ++i)
        fout << ans[i] << ' ';
}