Cod sursa(job #2507143)

Utilizator Anca.ioanaMuscalagiu Anca Ioana Anca.ioana Data 9 decembrie 2019 18:24:35
Problema Ciclu Eulerian Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
vector < pair <int, int> > L[101],M;
stack <int> S;
int Viz[101];
int n, m;
void Citire()
{ int i,u,v;
    f>>n>>m;
    for(i=0;i<=m-1;i++)
    { f>>u>>v;
        L[u].push_back(make_pair(v,i));
        L[v].push_back(make_pair(u,i));
        M.push_back(make_pair(u,v));
    }
}
vector <int> Sol;
void Ciclu_Eulerian()
{ int vecin;
S.push(1);
    while(!S.empty())
    { int nod=S.top();
        if(!L[nod].empty())
        { int poz=L[nod].back().second;
            L[nod].pop_back();
            if(Viz[poz]==0)
            { Viz[poz]=1;
                if(M[poz].first==nod)
                   vecin=M[poz].second;
                else vecin=M[poz].first;
                S.push(vecin);
            }
        }
        else { S.pop();
              Sol.push_back(nod);
             }
    }
}
void Afisare()
{ int i;
    for(i=0;i<Sol.size()-1;i++)
        g<<Sol[i]<<" ";
}
int main()
{
Citire();
Ciclu_Eulerian();
Afisare();
f.close();
g.close();
    return 0;
}