Mai intai trebuie sa te autentifici.
Cod sursa(job #3344555)
| Utilizator | Data | 2 martie 2026 12:19:25 | |
|---|---|---|---|
| Problema | Ciclu Eulerian | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.08 kb |
#include <fstream>
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
#include <queue>
using namespace std;
ifstream fin("ciclueuler.in");
ofstream fout("ciclueuler.out");
vector<pair<int,int>> L[100005];
bool viz[500005];
int main() {
int n,m;
fin>>n>>m;
for (int i=1; i<=m; i++) {
int x,y;
fin>>x>>y;
L[x].push_back({y,i});
L[y].push_back({x,i});
}
for (int i=1; i<=n; i++)
if (L[i].size()%2==1) {
fout<<-1;
return 0;
}
stack<int> st;
vector<int> sol;
st.push(1);
while (!st.empty()) {
int curr=st.top();
if (L[curr].empty()) {
sol.push_back(curr);
st.pop();
}
else{
pair<int,int> next=L[curr].back();
L[curr].pop_back();
if (!viz[next.second]) {
viz[next.second]=1;
st.push(next.first);
}
}
}
for (auto it:sol)
fout<<it<<' ';
return 0;
}
// 2 0 3 -1 7 -4
