Submission #573313

#TimeUsernameProblemLanguageResultExecution timeMemory
573313MohamedAliSaidaneStranded Far From Home (BOI22_island)C++14
0 / 100
3 ms4948 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; typedef tree<int,null_type,less<int>,rb_tree_tag, tree_order_statistics_node_update> indexed_set; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef pair<ld,ld> pld; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pii> vpi; typedef vector<pll> vpl; #define pb push_back #define popb pop_back #define pp pop_back #define pf push_front #define popf pop_front #define all(x) (x).begin(),(x).end() #define ff first #define ss second ///#define int ll int nx[4] = {0,0,1,-1}, ny[4] = {1,-1,0,0}; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} const int nax = 2e5 + 4; int p[nax]; string ans = ""; int n, m; ll s[nax]; ll val[nax]; vi adj[nax]; vpl edges; int findset(int x, ll v) { int head = p[x] == x? x: findset(p[x],v); if(ans[head] == '0') ans[x] = '0'; if(s[head] < v) ans[x] = '0'; return p[x] = head; } void unite(int i, int j, ll v) { int x = findset(i,v); int y = findset(j,v); if(x == y) return ; if(s[x] > s[y]) swap(x,y); p[x] = y; s[y] += s[x]; } bool comp(pll a, pll b) { ll u = max(s[a.ff],s[a.ss]); ll v = max(s[b.ff],s[b.ss]); return u < v; } void solve() { cin >> n >> m; for(int i = 1; i <= n; i++) { cin >> s[i]; val[i] = s[i]; p[i] = i; ans += '1'; } for(int i = 1; i <= m; i ++) { int a, b; cin >> a >> b; adj[a].pb(b); adj[b].pb(a); edges.pb({a,b}); } sort(all(edges),comp); for(auto e: edges) { ll maxi = max(val[e.ff],val[e.ss]); unite(e.ff,e.ss,maxi); } for(int i = 1; i <= n; i++) { int x = findset(i,0); cout << ans[i]; } } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; while(tt --) solve(); }

Compilation message (stderr)

island.cpp: In function 'void solve()':
island.cpp:99:21: warning: unused variable 'x' [-Wunused-variable]
   99 |                 int x = findset(i,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...