Cod sursa(job #2509406)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 14 decembrie 2019 10:52:01
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.77 kb
#include <iostream>
#include <stack>
#include <vector>
#define verticesMax 101024
#define arcsMax 501024

using namespace std;

class Arc {
public:
    int from,to,used;

    Arc();
    Arc(int newFrom,int newTo);

    isValid();

    validate();
    devalidate();
};

Arc::Arc() {
    used=0;
}

Arc::Arc(int newFrom,int newTo) {
    form=newFrom;
    to=newTo;
    used=0;
}

char Arc::isValid() {
    return !used;
}

void Arc::use() {
    used=1;
}

void Arc::unuse() {
    used=0;
}

int verticesL,arcsL;
Vector <int> Graph[verticesMax];
int GraphLength[verticesMax];
Arc Arcs[arcsMax];
int sol[arcsMax],solLength;

char read() {
    int x,y;
    scanf("%d%d",&verticesL,&arcsL);
    int grade[verticesMax];
    for(i=0;i<arcsL;++i) {
        scanf("%d%d",&x,&y);
        Arc Arcs[i](x,y);
        Graph[x].push(i);
        Graph[y].push(i);
        ++GraphLength[x];
        ++GraphLength[y];
        ++grade[x];
        ++grade[y];
    }
    for(i=0;i<verticesL;++i) {
        if(grade[i]%2||!grade[i]) {
            return 0;
        }
    }
    return 1;
}

void fillStack(stack <int>&S,int first) {
    int i,topPos,nextPos;
    for(;S.top()!=first;) {
        topPos=S.top();
        for(nextPos=S.;;)
    }
}

void solve() {
    stack <int> S;
    S.push(1);
    fillStack(S,1);
}

void display() {
    int i;
    for(i=0;i<solLength;++i) {
        printf("%d ",sol[i]);
    }
}

int main()
{
    freopen("ciclueuler.in","r",stdin);
    freopen("ciclueuler.out","w",stdout);
    if(read())
    {
        solve();
        if(solLength!=arcsL) {
            printf("-1");
        }
        else {
            display();
        }
    }
    else {
        printf("-1");
    }
    return 0;
}