Cod sursa(job #1134396)

Utilizator alexclpAlexandru Clapa alexclp Data 6 martie 2014 15:03:22
Problema Ciclu Eulerian Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 100005;

struct Muchie {
    int first;
    int second;
};

int n, m, cnt;
int deAfisat[N*5];

bool folosit[N*5];

vector <int> a[N*5];

Muchie v[N];

void read()
{
    in >> n >> m;

    for (int i = 1; i <= m; ++i) {
        int x, y;

        in >> x >> y;

        v[i] = (Muchie){x, y};

        a[x].push_back(i);
    }
}

void euler(int x)
{
    int y, indice;

    for (vector<int>::iterator it = a[x].begin(); it < a[x].end(); ++it) {
        indice = *it;

        if(!folosit[indice]) {
            folosit[indice] = true;
            y = v[indice].first;
            if (x == y) {
                y = v[indice].second;
            }
            euler(y);
        }
    }

    deAfisat[++cnt] = x;
}

void solve()
{
    euler(1);
    //out << cnt << "\n";

    if (cnt == m+1) {
        for (int i = 2; i <= cnt; ++i) {
            out << deAfisat[i] << " ";
        }
        out << "\n";
    } else {
        out << "-1\n";
    }
}

int main()
{
    read();

    solve();

    return 0;
}