Submission #1267187

#TimeUsernameProblemLanguageResultExecution timeMemory
1267187DangKhoizzzzStranded Far From Home (BOI22_island)C++20
20 / 100
212 ms27208 KiB
#include <algorithm> #include <bits/stdc++.h> #define int long long #define fi first #define se second #define pii pair <int , int> #define arr3 array <int , 3> using namespace std; const int INF = 1e18; const int maxn = 2e5 + 7; const int mod = 1e9; int n, m, a[maxn]; vector <int> g[maxn]; bool vis[maxn]; namespace sub1 { bool check() { if(n <= 2000 && m <= 2000) return 1; return 0; } void solve() { priority_queue <pii> Q; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) vis[j] = 0; vis[i] = 1; int cur = a[i]; int rem = n-1; for(int v: g[i]) Q.push((pii){-a[v], v}); while(!Q.empty()) { auto tmp = Q.top(); Q.pop(); int u = tmp.se; if(vis[u]) continue; if(a[u] > cur) continue; rem--; vis[u] = 1; cur += a[u]; for(int v: g[u]) { if(!vis[v]) Q.push({-a[v], v}); } } cout << (rem == 0); } } }; namespace sub2 { bool check() { for(int i = 2; i <= n; i++) { if(a[i] > a[i-1]) return 0; } return 1; } int sum[maxn]; bool mark[maxn]; void dfs(int u, int p) { sum[u] = a[u]; for(int v: g[u]) { if(v == p) continue; dfs(v, u); sum[u] += sum[v]; } } void go(int u, int p) { if(sum[u] >= a[p]) mark[u] = 1; else return; for(int v: g[u]) { if(v == p) continue; go(v, u); } } void solve() { dfs(1, 0); go(1, 0); for(int i = 1; i <= n; i++) cout << mark[i]; } } namespace sub4 { void solve() { } } void solve() { cin >> n >> m; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= m; i++) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } if(sub1::check()) sub1::solve(); else if(sub2::check()) sub2::solve(); else sub4::solve(); } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); 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...