Cod sursa(job #1872001)

Utilizator andreea_zahariaAndreea Zaharia andreea_zaharia Data 7 februarie 2017 21:03:17
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int NMAX = 100010;
const int MMAX = 500010;

struct muchie {int u, v; bool del;} m[MMAX];

int N, M;
vector<int> g[NMAX];
vector<int> ANS;

void euler (int nod) {
    for (auto &i : g[nod]) {
        if (m[i].del == 0) {
            m[i].del = 1;
            if (m[i].v == nod) {
                euler (m[i].u);
            }
            else {
                euler (m[i].v);
            }
        }
    }
    ANS.push_back (nod);
}

int main () {
    fin >> N >> M;
    for (int i = 1; i <= M; i++) {
        fin >> m[i].u >> m[i].v;
        g[m[i].u].push_back (i);
        g[m[i].v].push_back (i);
    }

    euler (1);

    for (int i = 0; i < ANS.size() - 1; i++) {
        fout << ANS[i] << " ";
    }
    fout << '\n';

    return 0;
}