제출 #593267

#제출 시각아이디문제언어결과실행 시간메모리
5932671zaid1Stranded Far From Home (BOI22_island)C++17
0 / 100
216 ms55068 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' const int M = 4e5+1; #define int long long vector<int> node[M]; int p[M], sum[M], k[M]; vector<int> bt[M]; int find(int s) { return (s == p[s]?s:p[s]=find(p[s])); } void uni(int x, int y) { if (bt[x].size() < bt[y].size()) swap(x, y); for (int i:bt[y]) bt[x].push_back(i); bt[y].clear(); p[y] = x; sum[x] += sum[y]; } signed main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> k[i]; for (int i = 1; i <= m; i++) { int a, b; cin >> a >> b; if (p[a] >= b) node[a].push_back(b); else node[b].push_back(a); } vector<int> v; for (int i = 1; i <= n; i++) { p[i] = i; bt[i] = {i}; sum[i] = k[i]; } for (int i = 1; i <= n; i++) v.push_back(i); sort(v.begin(), v.end(), [](int a, int b) {return k[a] < k[b];}); for (int s:v) { for (int i:node[s]) { if (find(i) == find(s)) continue; if (sum[find(i)] < k[s]) bt[find(i)].clear(); uni(find(s), find(i)); } } bitset<200005> x; for (int i:bt[find(1)]) x[i] = 1; for (int i = 1; i <= n; i++) cout << x[i]; cout << endl; return 0; } /* 4 3 4 2 2 1 1 2 3 2 4 1 */

컴파일 시 표준 에러 (stderr) 메시지

island.cpp: In function 'int main()':
island.cpp:56:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   56 |     for (int i = 1; i <= n; i++) cout << x[i]; cout << endl;
      |     ^~~
island.cpp:56:48: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   56 |     for (int i = 1; i <= n; i++) cout << x[i]; cout << endl;
      |                                                ^~~~
#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...