提出 #40999540


ソースコード 拡げる

use std::collections::VecDeque;

use proconio::input;

fn main() {
    input! {
        n: usize,
        a: [[usize; n]; n],
    }

    let inf = 1_usize << 60;
    let mut dp = vec![vec![inf; 1 << n]; n];
    dp[0][1] = 0_usize;
    let mut deque = VecDeque::new();
    deque.push_back((1, 0));
    while let Some((set, u)) = deque.pop_front() {
        for v in 0..n {
            if (set & (1 << v)) != 0 {
                continue;
            }
            let new_set = set | (1 << v);
            let new_cost = dp[u][set] + a[u][v];
            if new_cost < dp[v][new_set] {
                dp[v][new_set] = new_cost;
                deque.push_back((new_set, v));
            }
        }
    }
    let ans = (0..n).map(|i| dp[i][(1 << n) - 1] + a[i][0]).min().unwrap();
    println!("{}", ans);
}

提出情報

提出日時
問題 C - 巡回セールスマン問題
ユーザ bouzuya
言語 Rust (1.42.0)
得点 100
コード長 808 Byte
結果 AC
実行時間 15 ms
メモリ 3156 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 1
AC × 22
セット名 テストケース
Sample sample_001.txt
All sample_001.txt, data_001.txt, data_002.txt, data_003.txt, data_004.txt, data_005.txt, data_006.txt, data_007.txt, data_008.txt, data_009.txt, data_010.txt, data_011.txt, data_012.txt, data_013.txt, data_014.txt, data_015.txt, data_016.txt, data_017.txt, data_018.txt, data_019.txt, data_020.txt, sample_001.txt
ケース名 結果 実行時間 メモリ
data_001.txt AC 6 ms 2220 KiB
data_002.txt AC 2 ms 2092 KiB
data_003.txt AC 2 ms 2120 KiB
data_004.txt AC 4 ms 2076 KiB
data_005.txt AC 5 ms 2516 KiB
data_006.txt AC 2 ms 2028 KiB
data_007.txt AC 2 ms 2096 KiB
data_008.txt AC 3 ms 1976 KiB
data_009.txt AC 2 ms 2108 KiB
data_010.txt AC 15 ms 3156 KiB
data_011.txt AC 2 ms 2140 KiB
data_012.txt AC 10 ms 3152 KiB
data_013.txt AC 2 ms 2212 KiB
data_014.txt AC 2 ms 2144 KiB
data_015.txt AC 2 ms 2164 KiB
data_016.txt AC 2 ms 2004 KiB
data_017.txt AC 2 ms 2056 KiB
data_018.txt AC 2 ms 2056 KiB
data_019.txt AC 11 ms 3088 KiB
data_020.txt AC 2 ms 2076 KiB
sample_001.txt AC 2 ms 2172 KiB