Cod sursa(job #1480442)

Utilizator retrogradLucian Bicsi retrograd Data 2 septembrie 2015 16:43:20
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <vector>
#include <algorithm>
#include <fstream>

using namespace std;

typedef pair<int, int> Pair;

vector<int> Ciclu;
vector<Pair> G[100005];
bool Del[500005];

void dfs(int node) {
    while(!G[node].empty()) {
        auto p = G[node].back();
        G[node].pop_back();

        if(Del[p.second]) continue;
        Del[p.second] = 1;

        dfs(p.first);
    }

    Ciclu.push_back(node);
}

int main() {

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

    int n, m, a, b;
    fin>>n>>m;

    for(int i=1; i<=m; i++) {
        fin>>a>>b;
        G[a].push_back({b, i});
        G[b].push_back({a, i});
    }
    dfs(1);

    Ciclu.pop_back();
    for(auto v : Ciclu)
        fout<<v<<" ";

    return 0;
}