제출 #850411

#제출 시각아이디문제언어결과실행 시간메모리
850411MinaRagy06Stranded Far From Home (BOI22_island)C++17
10 / 100
1071 ms13132 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t ll; const int N = 200'005; bool in[N], bad[N]; vector<int> adj[N]; int main() { ios_base::sync_with_stdio(0), cin.tie(0); int n, m; cin >> n >> m; int a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0, u, v; i < m; i++) { cin >> u >> v; u--, v--; adj[u].push_back(v); adj[v].push_back(u); } for (int st = 0; st < n; st++) { if (bad[st]) { cout << 0; continue; } for (int i = 0; i < n; i++) { in[i] = 0; } in[st] = 1; priority_queue<pair<int, int>> pq; for (auto nxt : adj[st]) { pq.push({-a[nxt], nxt}); } ll ttl = a[st]; while (pq.size()) { int cost = -pq.top().first; int node = pq.top().second; pq.pop(); if (in[node]) continue; if (ttl < cost) { break; } ttl += cost; in[node] = 1; for (auto nxt : adj[node]) { if (!in[nxt]) { pq.push({-a[nxt], nxt}); } } } int ok = 1; for (int i = 0; i < n; i++) { ok &= in[i]; } if (!ok) { for (int i = 0; i < n; i++) { if (in[i]) { bad[i] = 1; } } } cout << ok; } cout << '\n'; 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...