Skip to content

Commit 577d566

Browse files
committed
add abc410d.rs
1 parent a0b0342 commit 577d566

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/abc/abc410d.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/** THIS IS AN OUTPUT FILE. NOT EDIT THIS FILE DIRECTLY. **/
2+
use proconio::input;
3+
use proconio::marker::*;
4+
use std::marker::PhantomData;
5+
use std::cmp::*;
6+
use std::collections::*;
7+
8+
fn main() {
9+
input! {
10+
n:usize,
11+
m:usize,
12+
abw:[(Usize1,Usize1,usize);m]
13+
}
14+
15+
let max = 1 << 10 + 10;
16+
let mut memo = vec![vec![false;max];n];
17+
memo[0][0] = true;
18+
let mut stack = vec![(0,0)];
19+
20+
let mut g = vec![vec![];n];
21+
for (a,b,w) in abw {
22+
g[a].push((b,w));
23+
}
24+
25+
while !stack.is_empty() {
26+
let mut new_stack = vec![];
27+
while let Some((ci, cv)) = stack.pop() {
28+
for &(ni, nv) in &g[ci] {
29+
let nmask = cv ^ nv;
30+
if !memo[ni][nmask] {
31+
memo[ni][nmask] = true;
32+
new_stack.push((ni, nmask));
33+
}
34+
}
35+
}
36+
stack = new_stack;
37+
}
38+
39+
for i in 0..max {
40+
if memo[n-1][i] {
41+
println!("{}", i);
42+
return;
43+
}
44+
}
45+
println!("-1");
46+
}

0 commit comments

Comments
 (0)