Submission #66753087
Source Code Expand
Copy
use proconio::{input, marker::Usize1};fn main() {input! {n: usize,m: usize,abw: [(Usize1, Usize1, u32); m],}let mut g = vec![vec![]; n];for (a, b, w) in abw {g[a].push((b, w));g[b].push((a, w));}let mut dfs = vec![0];let mut dist = vec![!0; n];dist[0] = 0;while let Some(u) = dfs.pop() {for &(v, w) in &g[u] {if dist[v] == !0 {dist[v] = dist[u] ^ w;dfs.push(v);
use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, m: usize, abw: [(Usize1, Usize1, u32); m], } let mut g = vec![vec![]; n]; for (a, b, w) in abw { g[a].push((b, w)); g[b].push((a, w)); } let mut dfs = vec![0]; let mut dist = vec![!0; n]; dist[0] = 0; while let Some(u) = dfs.pop() { for &(v, w) in &g[u] { if dist[v] == !0 { dist[v] = dist[u] ^ w; dfs.push(v); } } } if dist[n - 1] == !0 { println!("-1"); return; } let path = dist[n - 1]; let mut cycle = vec![]; let mut seen = vec![false; n]; for u in 0..n { if seen[u] || dist[u] == !0 { continue; } let mut dfs = vec![u]; seen[u] = true; while let Some(u) = dfs.pop() { for &(v, w) in &g[u] { if seen[v] { if dist[u] != !0 && dist[v] != !0 && dist[u] ^ dist[v] ^ w != 0 { cycle.push(dist[u] ^ dist[v] ^ w); } continue; } dfs.push(v); seen[v] = true; } } } let mut basis = vec![]; for cycle in cycle { let mut tmp = cycle; for &b in &basis { tmp = tmp.min(tmp ^ b); } if tmp != 0 { basis.push(tmp); } } let mut ans = path; for i in 0..1 << basis.len() { let mut tmp = path; for (j, &b) in basis.iter().enumerate() { if i >> j & 1 == 1 { tmp ^= b; } } ans = ans.min(tmp); } println!("{}", ans); }
Submission Info
Submission Time | |
---|---|
Task | D - XOR Shortest Walk |
User | hayatroid |
Language | Rust (rustc 1.70.0) |
Score | 0 |
Code Size | 1762 Byte |
Status | WA |
Exec Time | 1 ms |
Memory | 2208 KiB |
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 400 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, sample_01.txt, sample_02.txt, sample_03.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
hand_01.txt | AC | 1 ms | 1920 KiB |
hand_02.txt | AC | 1 ms | 2084 KiB |
hand_03.txt | WA | 1 ms | 1864 KiB |
hand_04.txt | AC | 1 ms | 1948 KiB |
hand_05.txt | WA | 1 ms | 1904 KiB |
hand_06.txt | WA | 1 ms | 1868 KiB |
hand_07.txt | WA | 1 ms | 1872 KiB |
hand_08.txt | WA | 1 ms | 1888 KiB |
random_01.txt | AC | 1 ms | 1952 KiB |
random_02.txt | AC | 1 ms | 1988 KiB |
random_03.txt | AC | 1 ms | 1940 KiB |
random_04.txt | AC | 1 ms | 1988 KiB |
random_05.txt | AC | 1 ms | 2076 KiB |
random_06.txt | AC | 1 ms | 1896 KiB |
random_07.txt | AC | 1 ms | 1908 KiB |
random_08.txt | AC | 1 ms | 1944 KiB |
random_09.txt | AC | 1 ms | 1928 KiB |
random_10.txt | AC | 1 ms | 2092 KiB |
random_11.txt | AC | 1 ms | 1976 KiB |
random_12.txt | AC | 1 ms | 2172 KiB |
random_13.txt | AC | 1 ms | 1904 KiB |
random_14.txt | AC | 1 ms | 2140 KiB |
random_15.txt | AC | 1 ms | 2092 KiB |
random_16.txt | AC | 1 ms | 1972 KiB |
random_17.txt | AC | 1 ms | 2108 KiB |
random_18.txt | AC | 1 ms | 1996 KiB |
random_19.txt | AC | 1 ms | 2208 KiB |
random_20.txt | AC | 1 ms | 2100 KiB |
random_21.txt | AC | 1 ms | 2108 KiB |
random_22.txt | AC | 1 ms | 2036 KiB |
sample_01.txt | AC | 1 ms | 1888 KiB |
sample_02.txt | AC | 1 ms | 1940 KiB |
sample_03.txt | AC | 1 ms | 1968 KiB |