Cod sursa(job #2410230)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 19 aprilie 2019 20:26:13
Problema Ciclu Eulerian Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
#define ff first
#define ss second

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;

const string file = "ciclueuler";
const ll INF = 9223372036854775807ll;
const int inf = 2147483647, nmax = 100005;

int n, m;
vector<int> v[nmax], sol;
bool ok[nmax];
pi e[nmax];

void dfs(int x)
{
    for (int i = v[x].size()-1; i >= 0; --i)
        if(!ok[v[x][i]]){
            ok[v[x][i]] = 1;
            int y = e[v[x][i]].ff;
            if(y == x)
                y = e[v[x][i]].ss;
            dfs(y);
        }
    sol.push_back(x);
}

int main()
{
    ifstream fin (file+".in");
    ofstream fout (file+".out");
    fin >> n >> m;
    for (int i = 1; i <= m; ++i){
        int x, y;
        fin >> x >> y;
        e[i] = {x, y};
        v[x].push_back(i);
        v[y].push_back(i);
    }
    dfs(1);
    sol.pop_back();
    for (auto x : sol)
        fout << x << " ";
    return 0;
}