Cod sursa(job #1358515)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 24 februarie 2015 17:34:20
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <bitset>

#define NMAX 100005

using namespace std;

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

int n, m;
vector<int> G[NMAX], sol;
bitset<NMAX> viz;

void euler(int x)
{
    int aux;
    for (int i = 0; i < G[x].size(); ++i)
        if (G[x][i])
        {
            aux = G[x][i];
            G[x][i] = 0;

            for (int j = 0; j < G[aux].size(); ++j)
                if (G[aux][j] == x) {G[aux][j] = 0; break;}

            euler(aux);
        }
    sol.push_back(x);
}
int main()
{
    int x, y;
    fin >> n >> m;

    for (int i = 1; i <= m; ++i)
    {
        fin >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    euler(1);

    for (int i = 0; i < sol.size(); ++i)
        fout << sol[i] << ' ';
    return 0;
}