Cod sursa(job #2163348)

Utilizator danutmafteiMaftei Danut danutmaftei Data 12 martie 2018 17:52:51
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#define Nmax 205
#include <vector>

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

int n,m;
int nr;
bool ok=false;
bool muchie[Nmax][Nmax];
vector<int>lista[Nmax];
vector<int>solutie;

void citire()
{
    int x,y;
    fin>>n;

    while(fin>>x>>y)
    {
        m++;
        lista[x].push_back(y);
        lista[y].push_back(x);
    }
    m++;
    fin.close();
}

void sterge(int nod,int vecin)
{
    lista[nod].erase(lista[nod].begin()+0);

    for(size_t i=0;i<lista[vecin].size();++i)
       if(lista[vecin][i]==nod){
            lista[vecin].erase(lista[vecin].begin()+i);
       break;
    }



}

void DFS(int nod)
{


        while((int)lista[nod].size())
        {
            int vecin=lista[nod][0];

            sterge(nod,vecin);
            DFS(vecin);

        }
        solutie.push_back(nod);

}
int main()
{
    citire();
    fout<<m<<"\n";
    DFS(1);

    for(int i=(int)solutie.size()-1;i>=0;--i)
        fout<<solutie[i]<<" ";

    return 0;
}