Submission #1234212

#TimeUsernameProblemLanguageResultExecution timeMemory
1234212franuchBrought Down the Grading Server? (CEOI23_balance)C++20
0 / 100
2095 ms17188 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define vc vector #define st first #define nd second #define pll pair<ll, ll> #define sz(a) (ll)a.size() #define all(a) a.begin(), a.end() #define pub push_back #define pob pop_back ll E, n, V; vc<vc<ll>> a; void input() { cin >> E >> n >> V; a.assign(E, vc<ll>(n)); for (ll i = 0; i < E; i++) for (ll j = 0; j < n; j++) { cin >> a[i][j]; a[i][j]--; } } struct Edge { ll v, i; }; void solve() { vc<vc<Edge>> g(V, vc<Edge>()); for (ll i = 0; i < E; i++) { ll v = a[i][0]; ll w = a[i][1]; g[v].pub({w, i}); g[w].pub({v, i}); } vc<ll> exp(V, 0); for (ll i = 0; i < E; i++) exp[a[i][0]]++, exp[a[i][1]]++; for (ll i = 0; i < V; i++) exp[i] /= 2; vc<ll> cur(V, 0); for (ll i = 0; i < E; i++) cur[a[i][0]]++; vc<bool> vis; function<bool(ll)> dfs = [&](ll v) { vis[v] = true; if (cur[v] < exp[v]) { cur[v]++; return true; } for (auto &e : g[v]) { if (vis[e.v] or a[e.i][0] != v) continue; if (dfs(e.v)) { swap(a[e.i][0], a[e.i][1]); return true; } } return false; }; while (true) { vis.assign(V, false); bool git = false; for (ll v = 0; v < V; v++) { if (vis[v] or cur[v] <= exp[v]) continue; if (dfs(v)) { git = true; cur[v]--; } } if (not git) break; } for (auto &ai : a) cout << ai[0] + 1 << " " << ai[1] + 1 << "\n"; } void program() { input(); solve(); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); program(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...