Cod sursa(job #1290403)

Utilizator span7aRazvan span7a Data 11 decembrie 2014 10:54:36
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
#include<deque>
#include<vector>
#include<iostream>
#include<algorithm>

#define NMAX 100005

using namespace std;

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


vector<int> G[NMAX];
int n;
void afis();
void citire() {
int a, b, m;
fin>>n>>m;
for(int i=0;i<m;i++) {
        fin>>a>>b;
    G[a-1].push_back(b-1);
    G[b-1].push_back(a-1);
}

afis();
}

void deleteEdge(int nod, int val) {
    G[nod].erase(find(G[nod].begin(), G[nod].end(), val));
}

void afis() {
    for(int k=0; k<10; k++) {
        cout<<"L["<<k<<"]: ";

        for(int l=0; l<G[k].size(); l++) cout<<G[k][l]<<" ";

        cout<<endl;
    }
}

deque<int> Q;
void euler(int node) {
    while(!G[node].empty()) {
            int vec = G[node][0];
            deleteEdge(node, vec);
            deleteEdge(vec, node);
            //cout<<G[node].size()<<" "<<G[vec].size()<<endl;
            euler(vec);

            fout<<vec+1<<" ";
    }
}

int main() {
    citire();
    euler(1);
    return 0;
}