제출 #1295922

#제출 시각아이디문제언어결과실행 시간메모리
1295922Jawad_Akbar_JJStranded Far From Home (BOI22_island)C++20
10 / 100
602 ms589824 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int N = 1<<18; #define int long long int Sz[N], Par[N], er[N], lst, n, m; vector<int> cmp[N]; vector<pair<int, pair<int, int>>> E; int root(int v){ return (Par[v] == v ? v : Par[v] = root(Par[v])); } signed main(){ cin>>n>>m; for (int i=1;i<=n;i++){ cin>>Sz[i], Par[i] = i; cmp[i].push_back(i); } for (int i=1, a, b;i<=m;i++){ cin>>a>>b; if (Sz[a] < Sz[b]) swap(a, b); E.push_back({Sz[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] < p){ for (int i : cmp[B]) er[i] = 1; cmp[B].clear(); } Par[B] = A; Sz[A] += Sz[B]; if (cmp[A].size() > cmp[B].size()) swap(cmp[A], cmp[B]); for (int i : cmp[B]) cmp[A].push_back(i); } for (int i=1;i<=n;i++) cout<<!er[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...