Cod sursa(job #2331086)

Utilizator TheSeekerRobert Cristian Dobra TheSeeker Data 29 ianuarie 2019 10:14:00
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;

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

bool f[100005],ok;
int n,m,i,j,a,b;
vector<int> L[100005],s;

void euler(int nod){
    int nnod;
    for (int i=0;i<L[nod].size();i++){
        nnod=L[nod][i];
        if (nnod>0){
            L[nod][i]=-1;
            for (j=0;j<L[nnod].size() && nod!=L[nnod][j];j++);
            L[nnod][j]=-1;
            euler(nnod);
        }
    }
    f[nod]=true;
    s.push_back(nod);
}

int main(){
    fin>>n>>m;
    for (i=1;i<=m;i++){
        fin>>a>>b;
        L[a].push_back(b);
        L[b].push_back(a);
    }
    euler(1);
    ok=true;
    for (i=1;i<=n && ok;i++)
        ok=f[i];
    if (ok)
        for (i=1;i<s.size();i++)
            fout<<s[i]<<" ";
    else
        fout<<-1;
    fin.close();
    fout.close();
    return 0;
}