Cod sursa(job #1793111)

Utilizator zdavid112zIon David-Gabriel zdavid112z Data 30 octombrie 2016 19:36:53
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> v[100000];
int n, m;
int st[500005], lst = 0;

void euler(int i)
{
    while(!v[i].empty())
    {
        int a = v[i].back();
        v[i].pop_back();
        v[a].erase(find(v[a].begin(), v[a].end(), i));
        euler(a);
    }
    st[lst++] = i;
}

int main()
{
    int i, a, b;
    freopen("ciclueuler.in", "r", stdin);
    freopen("ciclueuler.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(i = 0; i < m; i++)
    {
        scanf("%d%d", &a, &b);
        a--; b--;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    euler(0);
    for(i = 0; i < lst - 1; i++)
        printf("%d ", st[i] + 1);
    return 0;
}