Cod sursa(job #2767351)

Utilizator SabailaCalinSabaila Calin SabailaCalin Data 5 august 2021 20:31:50
Problema Ciclu Eulerian Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f ("ciclueuler.in");
ofstream g ("ciclueuler.out");

int n, m;
vector <int> V[201];
vector <int> path;

void Read()
{
    f >> n >> m;
    for (int i = 1; i <= m; i++)
    {
        int x, y;
        f >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
}

void Print()
{
    for (int i = 0; i < path.size()-1; i++)
    {
        g << path[i] << " ";
    }
}

void SetToZero(int neighbour, int k)
{
    for (int i = 0; i < V[neighbour].size(); i++)
    {
        if (V[neighbour][i] == k)
        {
            V[neighbour][i] = 0;
            return;
        }
    }
}

void Euler(int k)
{
    for (int i = 0; i < V[k].size(); i++)
    {
        int neighbour = V[k][i];
        if (neighbour != 0)
        {
            V[k][i] = 0;
            SetToZero(neighbour, k);
            Euler(neighbour);
        }
    }
    path.push_back(k);
}

int main()
{
    Read();
    Euler(1);
    Print();
}