Submission #697652

#TimeUsernameProblemLanguageResultExecution timeMemory
697652tamthegodSenior Postmen (BOI14_postmen)C++17
100 / 100
397 ms51496 KiB
// Make the best become better // No room for laziness #include<bits/stdc++.h> #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 = 5e5 + 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(); } } } int vis[maxN]; void Solve() { FindEulerTour(); int tmp = 0; vector<int> bin; for(int u : path) { if(vis[u]) { while(true) { int v = bin.back(); bin.pop_back(); cout << v << " "; vis[v] = 0; if(v == u) break; } cout << '\n'; } vis[u] = 1; bin.pb(u); } } int32_t main() { // freopen("x.inp", "r", stdin); ios_base::sync_with_stdio(false); cin.tie(nullptr); ReadInput(); Solve(); }

Compilation message (stderr)

postmen.cpp: In function 'void Solve()':
postmen.cpp:64:9: warning: unused variable 'tmp' [-Wunused-variable]
   64 |     int tmp = 0;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...