Cod sursa(job #2813728)

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

using namespace std;

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

vector<vector<int> > a(100001);
map<int,int> aa;

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 ++){
        map<int,int>::iterator it = aa.find(1e6 * k + i);
        if(it != aa.end())
        {
            aa.erase(it);
            map<int,int>::iterator it2 = aa.find(1e6 * i + k);
            if(it2 != aa.end())
                aa.erase(it2);
            Euler(i);
        }
    }
    r[++p] = k;
}

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