Cod sursa(job #2667809)

Utilizator felix24mihaiPrava Felix Mihai felix24mihai Data 3 noiembrie 2020 21:16:11
Problema Ciclu Eulerian Scor 50
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <iterator>
#define NMAX 100001
#define SZ(x) ((int) (x).size())
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");

multiset <int> nodes[NMAX];
multiset <int> :: iterator it;
multiset <int> :: iterator it2;
int n, m, sizeOf[NMAX];
vector <int> result;
void read(){
    f >> n >> m;
    int x, y;
    for (int i = 1; i <= m; i++){
        f >> x;
        f >> y;
        nodes[x].insert(y);
        sizeOf[x]++;
        sizeOf[y]++;
        if (x != y){
            nodes[y].insert(x);
        }
    }
}
void euler(int node){
    it = nodes[node].begin();
    while (it != nodes[node].end()){
        int next = *it;
    	//Erase the current node
    	nodes[node].erase(nodes[node].find(next));
        if (next !=  node){
            nodes[next].erase(nodes[next].find(node));
        }
    	euler(next);
    	it = nodes[node].begin();
    }
    result.push_back(node);
}
int main()
{
    read();
    euler(1);
    for (int i = result.size() - 1; i > 0; i--)
        g << result[i] << " ";
    return 0;
}