提出 #41166690
ソースコード 拡げる
#![allow(unused)]
fn main() {
let inp = readv::<usize>();
let (n, m) = (inp[0], inp[1]);
let mut adj = vec![vec![]; n];
for _ in 0..m {
let inp = readv::<usize>();
let (u, v) = (inp[0] - 1, inp[1] - 1);
adj[u].push(v);
}
// dp[u] = lenght of the longest path ending at u
// dp[u] = max(dp[v] + 1 for v in child(u))
let mut dp = vec![0; n];
let mut sort = topological_sort(&adj);
sort.reverse();
dp[sort[0]] = 0;
for &u in sort[1..].iter() {
for &v in adj[u].iter() {
dp[u] = dp[u].max(dp[v] + 1);
}
}
println!("{}", dp.iter().max().unwrap());
}
fn topological_sort(adj: &Vec<Vec<usize>>) -> Vec<usize> {
let n = adj.len();
let mut indeg = vec![0; n];
for u in 0..n {
for &v in adj[u].iter() {
indeg[v] += 1;
}
}
let mut que = std::collections::VecDeque::new();
for u in 0..n {
if indeg[u] == 0 {
que.push_back(u);
}
}
let mut nodes = vec![];
while let Some(u) = que.pop_front() {
nodes.push(u);
for &v in adj[u].iter() {
indeg[v] -= 1;
if indeg[v] == 0 {
que.push_back(v);
}
}
}
nodes
}
fn read<T: std::str::FromStr>() -> T {
let mut s = String::new();
std::io::stdin().read_line(&mut s).ok();
s.trim().parse().ok().unwrap()
}
fn readv<T: std::str::FromStr>() -> Vec<T> {
read::<String>()
.split_ascii_whitespace()
.map(|t| t.parse().ok().unwrap())
.collect()
}
fn reads() -> Vec<char> {
read::<String>().chars().collect::<Vec<char>>()
}
fn join<T: ToString>(arr: &[T], sep: &str) -> String {
arr.iter()
.map(|x| x.to_string())
.collect::<Vec<String>>()
.join(sep)
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | G - Longest Path |
| ユーザ | amoshuangyc |
| 言語 | Rust (1.42.0) |
| 得点 | 100 |
| コード長 | 1916 Byte |
| 結果 | AC |
| 実行時間 | 53 ms |
| メモリ | 8784 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 6 ms | 1944 KiB |
| 0_01 | AC | 1 ms | 2024 KiB |
| 0_02 | AC | 1 ms | 2032 KiB |
| 1_00 | AC | 3 ms | 2032 KiB |
| 1_01 | AC | 48 ms | 8784 KiB |
| 1_02 | AC | 32 ms | 3200 KiB |
| 1_03 | AC | 45 ms | 8216 KiB |
| 1_04 | AC | 43 ms | 5576 KiB |
| 1_05 | AC | 41 ms | 4612 KiB |
| 1_06 | AC | 43 ms | 4012 KiB |
| 1_07 | AC | 36 ms | 3592 KiB |
| 1_08 | AC | 34 ms | 3440 KiB |
| 1_09 | AC | 34 ms | 3356 KiB |
| 1_10 | AC | 33 ms | 3276 KiB |
| 1_11 | AC | 41 ms | 4212 KiB |
| 1_12 | AC | 53 ms | 7276 KiB |
| 1_13 | AC | 47 ms | 6364 KiB |
| 1_14 | AC | 42 ms | 4440 KiB |
| 1_15 | AC | 39 ms | 4036 KiB |
| 1_16 | AC | 45 ms | 6008 KiB |
| 1_17 | AC | 50 ms | 7824 KiB |
| 1_18 | AC | 47 ms | 5076 KiB |