Submission #1295879

#TimeUsernameProblemLanguageResultExecution timeMemory
1295879Jawad_Akbar_JJStranded Far From Home (BOI22_island)C++20
0 / 100
1 ms576 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int N = 1<<18; int s[N], Par[N], Sz[N], Ans[N], lst, n, m; vector<pair<int,int>> Vec; vector<pair<int, pair<int, int>>> E; int root(int v){ return (Par[v] == v ? v : Par[v] = root(Par[v])); } int main(){ cin>>n>>m; for (int i=1;i<=n;i++) cin>>s[i], Par[i] = i, Sz[i] = s[i]; for (int i=1, a, b;i<=m;i++){ cin>>a>>b; if (s[a] < s[b]) swap(a, b); E.push_back({s[a], {a, b}}); } sort(begin(E), end(E)); for (auto [p, ab] : E){ auto [a, b] = ab; int A = root(a), B = root(b); if (A == B) continue; if (Sz[B] >= s[a]) Vec.push_back({B, a}); Par[B] = A; Sz[A] += Sz[B]; lst = a; } Ans[lst] = 1; reverse(begin(Vec), end(Vec)); for (auto [B, a] : Vec) Ans[B] |= Ans[a]; for (int i=1;i<=n;i++) cout<<Ans[i]; cout<<'\n'; }
#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...