#include<iostream>
#include<vector>
#include <fstream>
using namespace std;
vector<vector<int>> matrix;
vector<int>res;
int def(int a) {
int x = 0;
for (int i = 0; i < matrix[a].size(); i++) {
x += matrix[a][i];
}
return x;
}
bool path() {
int x = 0;
for (int i = 0; i < matrix.size(); i++) {
if (def(i) % 2 == 1) {
x++;
}
}
if (x == 2) {
return true;
}
return false;
}
int start() {
int x = 0;
for (int i = 0; i < matrix.size(); i++) {
if (def(i) % 2 == 1) {
x = i;
}
}
return x;
}
bool cycle() {
for (int i = 0; i < matrix.size(); i++) {
if (def(i) % 2 == 1) {
return false;
}
}
return true;
}
bool sum() {
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix[i].size(); j++) {
if (matrix[i][j] > 0) {
return false;
}
}
}
return true;
}
void artist() {
for (int i = start(); !sum();) {
int max = 0;
int I = 0;
for (int j = 0; j < matrix[i].size(); j++) {
if (max <= matrix[i][j]) {
if (i == j) {
for (int J = 0; matrix[i][j] > 0; matrix[i][j]--) {
res.push_back(j + 1);
}
}
else
{
max = matrix[i][j];
I = j;
}
}
}
res.push_back(I + 1);
matrix[i][I]--;
matrix[I][i]--;
i = I;
}
}
int main() {
system("chcp 1251");
system("cls");
ifstream fin("graph.txt");
int V, E;
if (fin.is_open()) {
fin >> V >> E;
for (int i = 0; i < V; i++) {
vector<int> a;
for (int j = 0; j < V; j++) {
a.push_back(0);
}
matrix.push_back(a);
}
for (int i = 0; i < E; i++) {
int v, u, k;
fin >> v >> u >> k;
v--; u--;
matrix[v][u] = k;
matrix[u][v] = k;
}
fin.close();
}
else {
cout << "Помилка відкриття файла!\n";
return 0;
}
if (!path() && !cycle()) {
cout << "В мультиграфі немає ні циклу ні шляху Ейлера" << endl;
return 0;
}
else if (!path())
{
cout << "Цикл Ейлера" << endl;
}
else if (!cycle())
{
cout << "Шлях Ейлера" << endl;
}
cout << start() + 1 << " ";
artist();
for (int j = 0; j < res.size(); j++) {
cout << res[j] << " ";
}
return 0;
}
vector<vector<int>> matrix;
vector<int>res;