Submission #1174259

#TimeUsernameProblemLanguageResultExecution timeMemory
1174259madamadam3Stranded Far From Home (BOI22_island)C++20
10 / 100
1095 ms15168 KiB
#include <bits/stdc++.h> using namespace std; /* SAPO 2025 TC4 Day 1 - Candidates copied from BOI 2022 - Island 45/100 pt solution here */ int n, m; int max_pop = 0; vector<vector<int>> adj; vector<int> s; bool check(int start) { bool can = true; int cur_pop = s[start]; vector<bool> vis(n + 1, false); priority_queue<pair<int, int>> pq; pq.push({0, start}); while (!pq.empty()) { int pop = -pq.top().first, cur = pq.top().second; pq.pop(); vis[cur] = true; if (pop > cur_pop) return false; cur_pop += pop; if (cur_pop >= max_pop) return true; // hack to get 35 pts from the final task (bad cases) for (int nei : adj[cur]) { if (vis[nei]) continue; pq.push({-s[nei], nei}); } } return can; } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; s.resize(n + 1); for (int i = 1; i <= n; i++) cin >> s[i], max_pop = max(max_pop, s[i]); adj.assign(n + 1, vector<int>()); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } for (int i = 1; i <= n; i++) { cout << check(i) ? "1" : "0"; } 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...