제출 #722933

#제출 시각아이디문제언어결과실행 시간메모리
722933yahyobekabdunazarovStranded Far From Home (BOI22_island)C++17
0 / 100
1080 ms12436 KiB
#include <bits/stdc++.h> #define ff first #define ss second using namespace std; const int MAX_N = 2e5 + 9; vector<int> adj[MAX_N], weights(MAX_N); bool visited[MAX_N]; priority_queue <pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; void add_children(int u){ for(int i: adj[u]){ if(visited[i]) continue; pq.push(make_pair(weights[i], i)); } } int main() { int n, m, right = 0; cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> weights[i]; right += weights[i]; } for(int i = 0; i < m; i++){ int x, y; cin >> x >> y; adj[y].push_back(x); adj[x].push_back(y); } for(int i = 1; i <= n; i++){ int sum = weights[i]; visited[i] = 1; add_children(i); while(!pq.empty() && pq.top().ff <= sum){ visited[pq.top().ss] = 1; sum += pq.top().ff; pq.pop(); add_children(pq.top().ss); } cout << (sum == right); pq = priority_queue <pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>(); fill(visited, visited + MAX_N, false); } }
#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...