結果
| 問題 |
No.556 仁義なきサルたち
|
| ユーザー |
|
| 提出日時 | 2017-08-19 07:28:08 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 52 ms / 2,000 ms |
| コード長 | 2,026 bytes |
| コンパイル時間 | 12,110 ms |
| コンパイル使用メモリ | 379,040 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-14 15:30:44 |
| 合計ジャッジ時間 | 13,321 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
#![allow(unused_macros, unused_imports)]
use std::io::*;
use std::collections::*;
fn read_line() -> String {
let mut s = String::new();
stdin().read_line(&mut s).unwrap();
s
}
macro_rules! from_iter {
($($a:ident),+ = $it:expr) => {
$(let $a;)+
{
let mut _it = $it.into_iter();
$($a = _it.next().unwrap();)+
assert!(_it.next().is_none());
}
};
}
macro_rules! from_str {
($($a:ident : $t:ty),+ = $s:expr) => {
$(let $a: $t;)+
{
let mut _it = $s.split_whitespace();
$($a = _it.next().unwrap().parse().unwrap();)+
assert!(_it.next().is_none());
}
};
}
macro_rules! print_var_fmt {
($e:expr) => {
concat!(stringify!($e), ":\t{}")
};
($e:expr, $($es: expr),+) => {
concat!(print_var_fmt!($e), ",\t", print_var_fmt!($($es),+))
};
}
macro_rules! dbg {
($($es:expr),+) => {
writeln!(&mut io::stderr(), print_var_fmt!($($es),*), $($es),*);
};
}
fn main() {
let line = read_line();
from_str!(n: usize, m: usize = line.trim());
let mut boss: Vec<u32> = (0..n as u32+1).collect();
let mut piki: Vec<u32> = vec![1; n+1];
for _ in 0..m {
let line = read_line();
from_str!(a: usize, b: usize = line.trim());
let ta = boss[a] as usize;
let tb = boss[b] as usize;
if ta != tb {
if piki[ta] > piki[tb] || piki[ta] == piki[tb] && ta < tb {
piki[ta] += piki[tb];
for i in 1..n+1 {
if boss[i] == tb as u32 {
boss[i] = ta as u32;
}
}
} else {
piki[tb] += piki[ta];
for i in 1..n+1 {
if boss[i] == ta as u32 {
boss[i] = tb as u32;
}
}
}
}
}
for i in 1..n+1 {
println!("{}", boss[i]);
}
}