結果
問題 | No.1364 [Renaming] Road to Cherry from Zelkova |
ユーザー |
|
提出日時 | 2022-10-08 12:26:30 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,739 bytes |
コンパイル時間 | 24,414 ms |
コンパイル使用メモリ | 378,836 KB |
実行使用メモリ | 24,964 KB |
最終ジャッジ日時 | 2024-06-22 13:57:57 |
合計ジャッジ時間 | 18,889 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 WA * 28 |
ソースコード
use std::{collections::BinaryHeap, cmp::Reverse};const MOD: usize = 1e9 as usize + 7;fn topologycal_sort(paths: &Vec<Vec<usize>>) -> Vec<usize> {let n = paths.len();let mut ret = vec![];let mut ins = vec![0usize; n];for i in 0..n {for &v in paths[i].iter() {ins[v] += 1;}}let mut que = BinaryHeap::new();for i in 0..n {if ins[i] == 0 {que.push(Reverse(i));}}while let Some(Reverse(x)) = que.pop() {ret.push(x);for &v in paths[x].iter() {ins[v] -= 1;if ins[v] == 0 {que.push(Reverse(v));}}}ret}fn main() {let mut nm = String::new();std::io::stdin().read_line(&mut nm).ok();let nm: Vec<usize> = nm.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();let n = nm[0];let m = nm[1];let mut paths_for_dag = vec![vec![]; n+1];let mut paths = vec![vec![]; n+1];for _ in 0..m {let mut temp = String::new();std::io::stdin().read_line(&mut temp).ok();let temp: Vec<usize> = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();let u = temp[0];let v = temp[1];let l = temp[2];let a = temp[3];paths_for_dag[u].push(v);paths[u].push((v, l, a));}let temp = topologycal_sort(&paths_for_dag);if temp.len() < n+1 {println!("INF");return;}let mut cnts = vec![0usize; n+1];for &u in temp.iter() {for &(v, l, a) in paths[u].iter() {cnts[v] += l * a + cnts[u];cnts[v] %= MOD;}}println!("{}", cnts[n]);}