Cod sursa(job #1354923)

Utilizator valiro21Valentin Rosca valiro21 Data 22 februarie 2015 10:49:23
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <list>
#include <vector>

#define NMax 100001

using namespace std;

list<int> v[NMax];
vector<int> ciclu;
int n, m, x, y;

void euler (int now) {
    while (!v[now].empty()) {
        int w = *(v[now].begin ()); v[now].erase (v[now].begin ());
        for (list<int>::iterator i = v[w].begin (); i != v[w].end (); i++)
            if (*i == now) {
                v[w].erase (i);
                break;
            }

        euler (w);
    }

    ciclu.push_back (now);
}

int main()
{
    freopen( "ciclueuler.in", "rt", stdin);
    freopen( "ciclueuler.out", "wt", stdout);

    cin >> n >> m;
    for (int i = 1; i <= m; i++)
        cin >> x >> y,
        v[x].push_back (y),
        v[y].push_back (x);

    euler (1);
    for (int i = 0; i < ciclu.size () - 1; i++)
        cout << ciclu[i] << ' ';

    return 0;
}