Pagini recente » Istoria paginii utilizator/miniaturepif | Diferente pentru utilizator/blackodd intre reviziile 13 si 12 | Diferente pentru utilizator/mateisirghe intre reviziile 44 si 43 | Monitorul de evaluare | Cod sursa (job #1928045)
#include <bits/stdc++.h>
#define maxm 500100
#define maxn 100100
#define pb push_back
using namespace std;
int N,M,St[maxm],X[maxm],Y[maxm],st;
vector<int> V[maxn];
bool B[maxm];
string rs;
void euler(int x){
St[st=1] = x;
while(st){
x = St[st];
for(int y;!V[x].empty();){
int i = V[x].back(); V[x].pop_back();
if(B[i]) continue;
B[i] = 1;
y = x ^ X[i] ^ Y[i];
St[++st] = y;
x = y;
}
rs+=to_string(St[st--]) + " ";
}
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);
ifstream cin("ciclueuler.in");
ofstream cout("ciclueuler.out");
cin >> N >> M;
for(int i=1,x,y;i<=M;i++){
cin >> x >> y;
V[x].pb(i);
V[y].pb(i);
X[i] = x;
Y[i] = y;
}
for(int i = 1;i<=N;i++) if(V[i].size()%2) return cout << -1,0;
euler(1);
cout << rs;
}