Pagini recente » Cod sursa (job #1053675) | Cod sursa (job #1259674) | Cod sursa (job #2633917) | Cod sursa (job #2766752) | Cod sursa (job #1132994)
#include <iostream>
#include <list>
#include <vector>
#include <map>
#include <set>
using namespace std;
map<int, multiset<int> > verkko;
int n, m;
int c;
void tulosta(int x) {
if (c == 0) cout << x;
else if (c < m) cout << " " << x;
c++;
}
void tee_kierros(int alku) {
vector<int> kierros;
int solmu = alku;
do {
int uusi = *(verkko[solmu].begin());
verkko[solmu].erase(uusi);
auto x = verkko[uusi].find(solmu);
if (x != verkko[uusi].end())
verkko[uusi].erase(x);
solmu = uusi;
kierros.push_back(solmu);
} while (solmu != alku);
for (int &solmu : kierros) {
tulosta(solmu);
if (verkko[solmu].size() > 0) {
tee_kierros(solmu);
}
}
}
void euler(int alku) {
tulosta(alku);
tee_kierros(alku);
cout << endl;
}
void lisaa_kaari(int a, int b) {
verkko[a].insert(b);
verkko[b].insert(a);
}
void muodosta_verkko() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
lisaa_kaari(a, b);
}
}
int main() {
muodosta_verkko();
euler(1);
}