Mai intai trebuie sa te autentifici.
Cod sursa(job #1793986)
Utilizator | Data | 31 octombrie 2016 19:02:31 | |
---|---|---|---|
Problema | Ciclu Eulerian | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1 kb |
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct _muchie{
int a, b;
} muchie[500001]={0};
vector<int> v[100001];
bool folosit[500001]={0};
int sol[500001]={0}, lg;
ifstream f("ciclueuler.in");
ofstream g("ciclueuler.out");
void read(int& nr){
f>>nr;
}
void euler(int nod){
int w;
while(!v[nod].empty()){
w = v[nod].back();
v[nod].pop_back();
if(!folosit[w]){
folosit[w] = true;
if(muchie[w].a == nod)
euler(muchie[w].b);
else euler(muchie[w].a);
}
}
sol[++lg] = nod;
}
int main()
{
int i, j, n, m, nod, w, a, b;
read(n);read(m);
for(i=1; i<=m; i++){
read(a);read(b);
v[a].push_back(i);
v[b].push_back(i);
muchie[i].a = a;
muchie[i].b = b;
}
for(i=1; i<=n; i++)
if(v[i].size() % 2){
g<<"-1\n";
return 0;
}
euler(1);
for(i=1; i<lg; i++)
g<<sol[i]<<" ";
}