結果
問題 |
No.2319 Friends+
|
ユーザー |
|
提出日時 | 2023-05-26 22:41:47 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 2,443 ms / 3,000 ms |
コード長 | 2,325 bytes |
コンパイル時間 | 19,295 ms |
コンパイル使用メモリ | 380,060 KB |
実行使用メモリ | 395,008 KB |
最終ジャッジ日時 | 2024-12-25 09:02:43 |
合計ジャッジ時間 | 54,539 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 45 |
ソースコード
fn main() { let (n, m): (usize, usize) = { let mut line: String = String::new(); std::io::stdin().read_line(&mut line).unwrap(); let mut iter = line.split_whitespace(); ( iter.next().unwrap().parse().unwrap(), iter.next().unwrap().parse().unwrap() ) }; let mut p: Vec<usize> = { let mut line: String = String::new(); std::io::stdin().read_line(&mut line).unwrap(); line.split_whitespace() .map(|x| x.parse().unwrap()) .collect() }; let mut world = vec![Vec::new(); n]; for i in 0..n { p[i] -= 1; world[p[i]].push(i); } let mut friend = vec![vec![false; n]; n]; for _ in 0..m { let (a, b): (usize, usize) = { let mut line: String = String::new(); std::io::stdin().read_line(&mut line).unwrap(); let mut iter = line.split_whitespace(); ( iter.next().unwrap().parse().unwrap(), iter.next().unwrap().parse().unwrap() ) }; friend[a - 1][b - 1] = true; friend[b - 1][a - 1] = true; } let q: usize = { let mut line: String = String::new(); std::io::stdin().read_line(&mut line).unwrap(); line.trim().parse().unwrap() }; for _ in 0..q { let mut flag = false; let (mut x, mut y): (usize, usize) = { let mut line: String = String::new(); std::io::stdin().read_line(&mut line).unwrap(); let mut iter = line.split_whitespace(); ( iter.next().unwrap().parse().unwrap(), iter.next().unwrap().parse().unwrap() ) }; x -= 1; y -= 1; if p[x] != p[y] { for &z in world[p[y]].iter() { if friend[x][z] { flag = true; break } } } if flag { for i in 0..world[p[x]].len() { if world[p[x]][i] == x { world[p[x]].remove(i); break } } world[p[y]].push(x); p[x] = p[y]; println!("Yes"); } else { println!("No"); } } }