Cod sursa(job #1978557)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 8 mai 2017 09:36:54
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>
#define Nmax 100005
using namespace std;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
int grd[Nmax];
struct Graph
{
    vector <int> v;
};
Graph G[Nmax];
int sol[Nmax];
int N;
void DFS(int x)
{
    int i=0,w,j;
    while(G[x].v.size())
    {
        w=G[x].v[i];
        swap(G[x].v[i],G[x].v[G[x].v.size()-1]);
        G[x].v.pop_back();
        for(j=0;j<G[w].v.size();j++)
            if(G[w].v[i]==x)
            {
                swap(G[w].v[i],G[w].v[G[w].v.size()-1]);
                G[w].v.pop_back();
                j=G[w].v.size();
            }
        DFS(w);
    }
    sol[++N]=x;
}
int main()
{
    int n,m,i,j,k;
    f>>n>>m;
    for(k=1;k<=m;k++)
    {
        f>>i>>j;
        G[i].v.push_back(j);
        G[j].v.push_back(i);
        grd[i]++;
        grd[j]++;
        if(i==j)
            G[i].v.pop_back();
    }
    for(i=1;i<=n;i++)
        if(grd[i]%2)
        {
            g<<-1;
            return 0;
        }
    DFS(1);
    for(i=1;i<=m;i++)
        g<<sol[i]<<' ';

    return 0;
}