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 |