Pagini recente » Cod sursa (job #1552409) | Cod sursa (job #2464685) | Cod sursa (job #1556269) | Cod sursa (job #267735) | Cod sursa (job #3123415)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream in("ciclueuler.in");
ofstream out("ciclueuler.out");
const int N = 1e5 + 2;
const int M = 5e5 + 2;
struct muchie {
int x, y;
};
muchie e[M];
int n, m , prim[N];
bitset <M> sterse;
vector <int> vec[N];
vector <int> ras;
bool grd_pare(){
for(int i=1; i<=n; i++){
if(vec[i].size() % 2 != 0){
return false;
}
}
return true;
}
int celalalt_vf(muchie e, int x)
{
return (e.x + e.y - x);
}
void euler(int x){
while( prim[x] < (int)vec[x].size() ){
int iec= vec[x][prim[x]++];
muchie ec= e[iec];
int y= celalalt_vf(ec, x);
if( !sterse[iec] ){
sterse[iec] = 1;
euler(y);
}
}
ras.push_back(x);
}
int main()
{
in >> n >> m;
for(int i=1; i<=m; i++){
in >> e[i].x >> e[i].y;
vec[e[i].x].push_back(i);
vec[e[i].y].push_back(i);
}
if( !grd_pare() ){
out << -1;
return 0;
}
euler(1);
if( (int)ras.size() != m + 1 ){
out << -1;
return 0;
}
for(auto i : ras){
out << i << " ";
}
return 0;
}