Skip to content

Commit 8b625d6

Browse files
authored
add abc404d.rs
1 parent 5b308ba commit 8b625d6

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

src/abc/abc404d.rs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/** THIS IS AN OUTPUT FILE. NOT EDIT THIS FILE DIRECTLY. **/
2+
use proconio::input;
3+
use proconio::marker::*;
4+
use std::cmp::Reverse;
5+
use std::collections::*;
6+
7+
struct Helper {
8+
n:usize,
9+
m:usize,
10+
memo:Vec<Vec<usize>>,
11+
c:Vec<usize>,
12+
result:usize
13+
}
14+
15+
impl Helper {
16+
fn dfs(&mut self, i:usize, arr: &mut Vec<usize>) {
17+
if i == self.n {
18+
let mut count = vec![0;self.m];
19+
let mut temp = 0;
20+
21+
for j in 0..self.n {
22+
let v = arr[j];
23+
for k in &self.memo[j] {
24+
count[*k] += v;
25+
}
26+
27+
temp += self.c[j] * v;
28+
}
29+
30+
let mut flag = true;
31+
for j in 0..self.m {
32+
if count[j] < 2 {
33+
flag = false;
34+
break;
35+
}
36+
}
37+
38+
if flag {
39+
self.result = self.result.min(temp);
40+
}
41+
42+
return;
43+
}
44+
45+
for j in 0..3 {
46+
arr.push(j);
47+
self.dfs(i+1, arr);
48+
arr.pop();
49+
}
50+
}
51+
}
52+
53+
fn main() {
54+
input!{
55+
n:usize,
56+
m:usize,
57+
c:[usize;n],
58+
}
59+
60+
let mut memo = vec![vec![];n];
61+
for i in 0..m {
62+
input! {
63+
k:usize,
64+
a:[Usize1;k]
65+
}
66+
for j in a {
67+
memo[j].push(i);
68+
}
69+
}
70+
71+
let mut helper = Helper {
72+
n,
73+
m,
74+
memo,
75+
c,
76+
result: usize::MAX
77+
};
78+
helper.dfs(0, &mut vec![]);
79+
80+
println!("{}", helper.result);
81+
}

0 commit comments

Comments
 (0)