Cod sursa(job #2813717)

Utilizator Ionut151Marcu Ionut Ionut151 Data 7 decembrie 2021 09:29:44
Problema Ciclu Eulerian Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector<vector<int> > a(100001);
int r[500001];
int n,m;
int p;

int ad(int k,int i){
    for(int j=0;j<a[k].size();j++){
        if(a[k][j] == i)
            return j;
    }
    return -1;
}

void Euler(int k){
    for(int i = 1 ; i <= n ; i ++){
        int ai = ad(k,i);
        if(ai != -1)
        {
            a[k].erase(a[k].begin() + ai);
            a[i].erase(a[i].begin() + ad(i,k));
            Euler(i);
        }
    }
    r[++p] = k;
}

int main(){
    in >> n >> m;
    for(int i=1;i<=m;i++){
        int x,y;
        in >> x >> y;
        a[x].push_back(y);
        a[y].push_back(x);
    }
    Euler(1);
    for(int i=1;i<=p;i++){
        out << r[i] << " ";
    }
    return 0;
}