Cod sursa(job #2758611)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 11 iunie 2021 16:47:37
Problema Ciclu Eulerian Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include<cstdio>
#include<vector>
using namespace std;
FILE*in=fopen("ciclueuler.in","r");
FILE*out=fopen("ciclueuler.out","w");
int n,m,x,y,i,grad[100005],ct;
bool use[500005];
struct muchie
{
    int nr;
    int nrord;
};
muchie z;
vector<muchie> v[100005];
void euler(int nod)
{
    while(grad[nod]>0)
    {
        for(int t=0;t<v[nod].size();t++)
        {
            if(use[v[nod][t].nrord]==0)
            {
                grad[nod]--;
                grad[v[nod][t].nr]--;
                use[v[nod][t].nrord]=1;
                euler(v[nod][t].nr);
            }
        }
    }
    ct++;
    if(ct<=m)
    {
        fprintf(out,"%d ",nod);
    }
}
int main()
{
    fscanf(in,"%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
        fscanf(in,"%d%d",&x,&y);
        z.nr=y;
        z.nrord=i;
        v[x].push_back(z);
        grad[x]++;
        z.nr=x;
        v[y].push_back(z);
        grad[y]++;
    }
    euler(1);
}