제출 #963376

#제출 시각아이디문제언어결과실행 시간메모리
963376Spade1Stranded Far From Home (BOI22_island)C++14
10 / 100
176 ms43664 KiB
#pragma once #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; 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<ld> vld; typedef vector<pii> vpii; typedef vector<pll> vpll; typedef vector<pld> vpld; typedef vector<vi> vvi; typedef tuple<int, int, int> t3; typedef tuple<int, int, int, int> t4; template<typename T> using pq = priority_queue<T>; template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>; #define sz(x) (int)(x).size() #define mp make_pair #define pb push_back #define st first #define nd second #define lb lower_bound #define ub upper_bound #define all(x) (x).begin(), (x).end() #define ins insert #define int ll template<typename T> bool ckmin(T &a, const T &b) { return b < a ? a = b, 1 : 0; } template<typename T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MOD = 1e9 + 7; const int INF = 0x3fffffff; const ll LINF = 0x1fffffffffffffff; const char nl = '\n'; const int MX = 2e5 + 3; ll s[MX], ans[MX], sz[MX], rep[MX]; vi adj[MX], adj2[MX]; vector<t3> edges; int f(int i) {return rep[i] == i ? i : rep[i] = f(rep[i]);} void mark(int i, int prt, int v) { ans[i] = v; for (auto j : adj2[i]) { if (j == prt) continue; if (ans[j] == 0) mark(j, i, 0); else mark(j, i, v); } } void solve() { int n, m; cin >> n >> m; int mx = 0; for (int i = 1; i <= n; ++i) ans[i] = -1, rep[i] = i; for (int i = 1; i <= n; ++i) { cin >> s[i]; sz[i] = s[i]; if (s[mx] < s[i]) mx = i; } for (int i = 1; i <= m; ++i) { int u, v; cin >> u >> v; adj[u].pb(v); adj[v].pb(u); edges.pb({max(s[u], s[v]), u, v}); } sort(all(edges)); for (auto [M, u, v] : edges) { int fu = f(u), fv = f(v); if (fu == fv) continue; adj2[u].pb(v); adj2[v].pb(u); if (s[u] > sz[fv]) ans[v] = 0; if (s[v] > sz[fu]) ans[u] = 0; sz[fu] += sz[fv]; rep[fv] = rep[fu]; } mark(mx, 0, 1); for (int i = 1; i <= n; ++i) cout << ans[i]; cout << nl; } signed main(int argc, char* argv[]) { ios_base::sync_with_stdio(0); cin.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); } return 0; }

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

island.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
island.cpp: In function 'void solve()':
island.cpp:75:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   75 |   for (auto [M, u, v] : edges) {
      |             ^
island.cpp: At global scope:
island.cpp:89:8: warning: first argument of 'int main(ll, char**)' should be 'int' [-Wmain]
   89 | signed main(int argc, char* argv[]) {
      |        ^~~~
#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...