結果
問題 |
No.3113 The farthest point
|
ユーザー |
|
提出日時 | 2025-04-13 01:56:49 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,260 bytes |
コンパイル時間 | 11,740 ms |
コンパイル使用メモリ | 357,396 KB |
実行使用メモリ | 72,312 KB |
最終ジャッジ日時 | 2025-04-13 01:57:15 |
合計ジャッジ時間 | 22,264 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 2 |
other | WA * 22 |
ソースコード
#include "testlib.h" #include <bits/stdc++.h> using namespace std; using ll = long long; #define rep(i, a, b) for(ll i = a; i < (b); i++) struct DSU { vector<int> par; DSU(int n) : par(n) { iota(par.begin(), par.end(), 0); } int find(int x) { if (par[x] == x) return x; return par[x] = find(par[x]); } void unite(int x, int y) { par[find(x)] = find(y); } bool same(int x, int y) { return find(x) == find(y); } int groups() { set<int> s; for (int i = 0; i < (int)par.size(); i++) { s.insert(find(i)); } return s.size(); } }; const int min_n = 1; const int max_n = 500'000; const int min_w = -1'000'000'000; const int max_w = 1'000'000'000; int main(){ registerValidation(); int n = inf.readInt(min_n, max_n); inf.readEoln(); DSU uf(n); rep(i, 0, n-1) { cerr << i << endl; int u = inf.readInt(1, n); inf.readSpace(); int v = inf.readInt(1, n); inf.readSpace(); inf.readInt(min_w, max_w); inf.readEoln(); u--; v--; assert(!uf.same(u, v)); uf.unite(u, v); } assert(uf.groups() == 1); inf.readEof(); }