結果
| 問題 | No.3756 Udon Network |
| ユーザー |
|
| 提出日時 | 2026-09-11 19:27:33 |
| 言語 | Rust (1.97.1 + proconio + num + itertools + ACL) |
| 結果 |
RE
不安定
|
| 実行時間 | - |
| コード長 | 1,444 bytes |
| 記録 | |
| コンパイル時間 | 1,077 ms |
| コンパイル使用メモリ | 201,892 KB |
| 実行使用メモリ | 31,820 KB |
| 最終ジャッジ日時 | 2026-10-09 17:38:51 |
| 合計ジャッジ時間 | 11,203 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge5_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| Example | 0 % | AC * 4 RE * 4 |
| Subtask $1$ | 2 % | AC * 5 RE * 10 |
| Subtask $2$ | 4 % | AC * 5 RE * 17 |
| Subtask $3$ | 8 % | AC * 2 RE * 7 |
| Subtask $4$ | 16 % | AC * 2 RE * 8 |
| Subtask $5$ | 32 % | AC * 10 |
| Subtask $6$ | 38 % | AC * 12 RE * 41 |
| 合計 | 4 * 32% = 128 点 |
ソースコード
#[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, i32); m],
}
if a.iter().enumerate().any(|(i, &a)| a != i) {
panic!()
}
let mut ans = vec![-1; q];
let mut b = std::iter::repeat_n(BinaryHeap::new(), n).collect::<Box<_>>();
for i in 0..q {
input! {
s: Usize1,
c: usize,
}
if c == 1 {
ans[i] = 0;
} else {
b[s].push((!c, i));
}
}
uvw.sort_unstable_by_key(|&(_, _, w)| w);
let mut uf = Dsu::new(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 size = uf.size(z);
let mut b1 = std::mem::take(&mut b[u]);
let mut b2 = std::mem::take(&mut b[v]);
if b1.len() < b2.len() {
std::mem::swap(&mut b1, &mut b2);
}
b1.extend(b2);
while let Some(&(c, i)) = b1.peek() {
if !c > size {
break;
}
b1.pop();
ans[i] = w;
}
b[z] = b1;
}
for x in ans {
println!("{x}");
}
}