Cod sursa(job #2806137)

Utilizator namesurname01Name Surname namesurname01 Data 22 noiembrie 2021 13:26:07
Problema Ciclu Eulerian Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <vector>
#include <deque>

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

bool viz[500002];
struct bla
{
    int no, mu;
};
vector <bla> graph[100002];
deque <int> q;
deque <int> ::reverse_iterator it;


void euler(int nod)
{
    for (int i = 0;i < graph[nod].size();++i)
    {
        int ve = graph[nod][i].no;
        if (!viz[graph[nod][i].mu])
        {
            viz[graph[nod][i].mu] = 1;
            euler(ve);
        }
    }
    q.push_back(nod);
}
int main()
{
    int n, m, x, y;
    f >> n >> m;
    for (int i = 1;i <= m;++i)
    {
        f >> x >> y;
        graph[x].push_back({ y,i });
        graph[y].push_back({ x,i });
    }
    for (int i = 1;i <= n;++i)
        if (graph[i].size() % 2 != 0)
        {
            g << -1;
            return 0;
        }
    euler(1);
    q.pop_front();
    for (it = q.rbegin();it != q.rend();++it)
        g << *it << ' ';
    return 0;
}