제출 #687494

#제출 시각아이디문제언어결과실행 시간메모리
687494tamthegod어르신 집배원 (BOI14_postmen)C++17
0 / 100
13 ms23816 KiB
// Make the best become better // No room for laziness #include<bits/stdc++.h> #define int long long #define pb push_back #define fi first #define se second using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int maxN = 1e6 + 5; const int mod = 1e9 + 7; const ll oo = 1e18; int n, m; int id = 0; vector<int> path; vector<int> adj[maxN]; struct TEdge { int u, v; bool del; } e[maxN]; void ReadInput() { cin >> n >> m; for(int i=1; i<=m; i++) { int u, v; cin >> u >> v; e[i] = {u, v, 0}; adj[u].pb(i); adj[v].pb(i); } } void FindEulerTour() { vector<int> vc; vc.pb(1); while(!vc.empty()) { int u = vc.back(); while(!adj[u].empty() && e[adj[u].back()].del) adj[u].pop_back(); if(!adj[u].empty()) { int id = adj[u].back(); adj[u].pop_back(); e[id].del = 1; vc.pb(e[id].u ^ e[id].v ^ u); } else { path.pb(u); vc.pop_back(); } } } void Solve() { FindEulerTour(); int tmp = 0; for(int u : path) { if(u == tmp) { tmp = 0; cout << '\n'; } else { cout << u << " "; if(!tmp) tmp = u; } } } int32_t main() { //freopen("x.inp", "r", stdin); ios_base::sync_with_stdio(false); cin.tie(nullptr); ReadInput(); Solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...