Submission #1262383

#TimeUsernameProblemLanguageResultExecution timeMemory
1262383damjandavkov어르신 집배원 (BOI14_postmen)C++20
0 / 100
24 ms3776 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, i, j, k, t, u, hi, lo, md; cin >> n >> m; vector<int> p(n, 0), o = {0}, d(n); vector<vector<pair<int, bool> > > v(n); for (k = 0; k < m; k++) { cin >> i >> j; i--; j--; v[i].push_back({j, 0}); v[j].push_back({i, 0}); } for (k = 0; k < n; k++) { d[k] = v[k].size(); sort(v[k].begin(), v[k].end()); } t = 0; for (k = 1; k < m; k++) { for (; p[t] < v[t].size(); p[t]++) { if (v[t][p[t]].second) continue; u = v[t][p[t]].first; if (k < m - 1 && d[u] == 1) continue; hi = v[u].size(); lo = -1; while (hi - lo > 1) { md = (hi + lo) >> 1; if (v[u][md].first > t) hi = md; else lo = md; } v[u][lo].second = v[t][p[t]].second = 1; d[t]--; d[u]--; t = u; o.push_back(t); break; } } o.push_back(0); vector<bool> w(n, 0); vector<int> pr(m + 1); for (i = 0; i <= m; i++) pr[i] = i - 1; for (i = 0; i <= m; i++) { if (w[o[i]]) { cout << o[i] + 1; for (j = i - 1; j >= 0 && o[j] != o[i]; j = pr[j]) { w[o[j]] = 0; cout << ' ' << o[j] + 1; } pr[i] = pr[j]; cout << '\n'; } else w[o[i]] = 1; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...