Cod sursa(job #914844)

Utilizator maritimCristian Lambru maritim Data 14 martie 2013 15:20:54
Problema Ciclu Eulerian Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#include<vector>
using namespace std;

FILE *f = fopen("ciclueuler.in","r");
FILE *g = fopen("ciclueuler.out","w");

#define MaxN 100100
#define MaxM 500100

int N,M;
vector<pair<int,int> > A[MaxN];
int SolV[MaxM];
int viz[MaxM];

void citire(void)
{
    int a,b;

    fscanf(f,"%d %d",&N,&M);
    for(int i=1;i<=M;i++)
    {
        fscanf(f,"%d %d",&a,&b);
        A[a].push_back(make_pair(b,i));
        A[b].push_back(make_pair(a,i));
    }
}

void euler(int nod)
{
    for(int i=0;i<A[nod].size();i++)
        if(!viz[A[nod][i].second])
        {
            viz[A[nod][i].second] = 1;
            euler(A[nod][i].first);
        }
    SolV[++SolV[0]] = nod;
}

int main()
{
    citire();
    euler(1);

    for(int i=1;i<SolV[0];i++)
        fprintf(g,"%d ",SolV[i]);
}