Submission #852603

#TimeUsernameProblemLanguageResultExecution timeMemory
85260312345678Stranded Far From Home (BOI22_island)C++17
0 / 100
95 ms15520 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int nx=2e5+5; int n, m, sz[2*nx], u, v, dsu[2*nx], cnt; vector<tuple<int, int, int>> d; vector<pair<int, int>> p; bool can[2*nx]; int find(int x) { if (dsu[x]==x) return x; return dsu[x]=find(dsu[x]); } void dfs(int u) { if (u<=n) return; if (!can[u]) can[p[u].first]=can[p[u].second]=0; dfs(p[u].first); dfs(p[u].second); } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m; for (int i=1; i<=2*n; i++) can[i]=1, dsu[i]=i; for (int i=1; i<=n; i++) cin>>sz[i]; for (int i=0; i<m; i++) cin>>u>>v, d.push_back({max(sz[u], sz[v]), u, v}); sort(d.begin(), d.end()); p.resize(n+1); cnt=n; for (int i=0; i<m; i++) { auto [w, u, v]=d[i]; int pu=find(u), pv=find(v); if (pu==pv) continue; if (sz[pu]<w) can[pu]=0; if (sz[pv]<w) can[pv]=0; dsu[pu]=dsu[pv]=++cnt; sz[cnt]=sz[pu]+sz[pv]; p.push_back({pu, pv}); } dfs(cnt); for (int i=1; i<=n; i++) cout<<can[i]?'1':'0'; }

Compilation message (stderr)

island.cpp: In function 'int main()':
island.cpp:47:50: warning: second operand of conditional expression has no effect [-Wunused-value]
   47 |     for (int i=1; i<=n; i++) cout<<can[i]?'1':'0';
      |                                                  ^
island.cpp:47:50: warning: third operand of conditional expression has no effect [-Wunused-value]
#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...