結果
| 問題 | No.3756 Udon Network |
| ユーザー |
|
| 提出日時 | 2026-09-11 19:15:49 |
| 言語 | Rust (1.97.1 + proconio + num + itertools + ACL) |
| 結果 |
TLE
不安定
|
| 実行時間 | - |
| コード長 | 1,540 bytes |
| 記録 | |
| コンパイル時間 | 1,270 ms |
| コンパイル使用メモリ | 207,816 KB |
| 実行使用メモリ | 44,828 KB |
| 最終ジャッジ日時 | 2026-10-09 17:38:14 |
| 合計ジャッジ時間 | 8,252 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| Example | 0 % | AC * 8 |
| Subtask $1$ | 2 % | AC * 15 |
| Subtask $2$ | 4 % | AC * 22 |
| Subtask $3$ | 8 % | AC * 3 TLE * 1 -- * 5 |
| Subtask $4$ | 16 % | AC * 2 -- * 8 |
| Subtask $5$ | 32 % | AC * 3 -- * 7 |
| Subtask $6$ | 38 % | AC * 22 TLE * 1 -- * 30 |
| 合計 | 4 * 6% = 24 点 |
ソースコード
#[allow(unused)]
use ac_library::*;
#[allow(unused)]
use itertools::Itertools;
#[allow(unused)]
use proconio::{marker::*, *};
#[allow(unused)]
use std::collections::*;
fn main() {
input! {
n: usize,
m: usize,
q: usize,
a: [Usize1; n],
mut uvw: [(Usize1, Usize1, u32); m],
}
let mut a = a
.into_iter()
.map(|a| std::iter::once(a).collect::<HashSet<_>>())
.collect::<Box<_>>();
let mut h = vec![1; n];
let mut p = vec![0; n];
let mut r = vec![0; n];
let mut d = (0..n).collect::<Vec<_>>();
uvw.sort_unstable_by_key(|&(_, _, w)| w);
let mut uf = Dsu::new(n);
let mut i = n;
for (u, v, w) in uvw {
let u = uf.leader(u);
let v = uf.leader(v);
if u == v {
continue;
}
let z = uf.merge(u, v);
let mut a1 = std::mem::take(&mut a[u]);
let mut a2 = std::mem::take(&mut a[v]);
if a1.len() < a2.len() {
std::mem::swap(&mut a1, &mut a2);
}
a1.extend(a2);
h.push(a1.len());
p.push(usize::MAX);
p[d[u]] = i;
p[d[v]] = i;
r.push(w);
a[z] = a1;
d[z] = i;
i += 1;
}
'a: for _ in 0..q {
input! {
mut s: Usize1,
c: usize,
}
while h[s] < c {
s = p[s];
if s == usize::MAX {
println!("-1");
continue 'a;
}
}
println!("{}", r[s]);
}
}