Submission #1219883

#TimeUsernameProblemLanguageResultExecution timeMemory
1219883nicolo_010스핑크스 (IOI24_sphinx)C++20
28.50 / 100
124 ms1204 KiB
#include <bits/stdc++.h> #include "sphinx.h" using namespace std; template <typename T> using v = vector<T>; using pii = pair<int, int>; using ll = long long; #define rep(i, k, n) for (int i = k; i < n; i++) int cnt; v<bool> vis; v<v<int>> adj; void dfs(int n, int u, v<int> &neg) { vis[n] = true; for (auto x : adj[n]) { if (!vis[x] && neg[x] == neg[n] && x != u) dfs(x, u, neg); } } int bs(int u, int am, v<int> &cmp) { int l = 0, r = am-1; int ans; int n = cmp.size(); while (l <= r) { map<int, int> mp; int m = (l+r)/2; rep(i, 0, m) { mp[i]++; } v<int> query = cmp; rep(i, 0, n) { if (mp.count(cmp[i]) || cmp[i] == -2) query[i] = n; else query[i] = -1; } query[u] = -1; cnt = 0; vis.assign(n, false); rep(i, 0, n) { if (query[i] == n && vis[i] == false) { cnt++; dfs(i, u, query); } } int coloured = am-(m); int compon = perform_experiment(query); if (compon == cnt+coloured) { ans = m; l = m+1; } else { r = m-1; } } return ans; } int count(v<int> &query, int u) { int n = query.size(); vis.assign(n, false); cnt = 0; rep(i, 0, n) { if (vis[i] == false && query[i] == n) { //if (u == 8) cout << i << " " << cnt << endl; cnt++; dfs(i, u, query); } } return cnt; } v<int> find_colours(int N, v<int> X, v<int> Y) { int n = N; v<int> trees; int id = 0; v<int> cmp(n, -2); cmp[0] = 0; id++; adj.resize(n); int m = X.size(); rep(i, 0, m) { int a = X[i], b = Y[i]; adj[a].push_back(b); adj[b].push_back(a); } rep(i, 1, n) { cmp[i] = -1; v<int> query = cmp; rep(j, 0, n) { if (cmp[j] == -2) query[j] = n; else query[j] = -1; } query[i] = -1; int comp = count(query, i); //if (i == 8) for (auto x : query) cout << x << endl; int ans = perform_experiment(query); //cout << comp << " " << ans << endl; if (ans == comp + id) { cmp[i] = bs(i, id, cmp); } else { cmp[i] = id; id++; } } return cmp; }
#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...