結果
問題 | No.177 制作進行の宮森あおいです! |
ユーザー |
![]() |
提出日時 | 2024-02-04 02:17:23 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,182 bytes |
コンパイル時間 | 3,269 ms |
コンパイル使用メモリ | 263,644 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-28 11:06:24 |
合計ジャッジ時間 | 3,821 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 13 |
ソースコード
#include <atcoder/maxflow>#include <bits/stdc++.h>using namespace std;int main(){cin.tie(0)->sync_with_stdio(0);int W;cin >> W;int N;cin >> N;vector<int> J(N);for (int i = 0; i < N; i++) {cin >> J[i];}int M;cin >> M;vector<int> C(M);for (int i = 0; i < M; i++) {cin >> C[i];}vector<vector<int>> X(M);for (int i = 0; i < M; i++) {int Q;cin >> Q;for (int j = 0; j < Q; j++) {int x;cin >> x;x--;X[i].push_back(x);}sort(begin(X[i]), end(X[i]));}atcoder::mf_graph<int> G(N + M + 2);int S = N + M;int T = N + M + 1;for (int i = 0; i < N; i++) {G.add_edge(S, i, J[i]);}for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if (!binary_search(begin(X[j]), end(X[j]), i)) {G.add_edge(i, N + j, INT_MAX);}}}for (int i = 0; i < M; i++) {G.add_edge(N + i, T, C[i]);}int flow = G.flow(S, T);cout << (flow >= W ? "SHIROBAKO" : "BANSAKUTSUKITA") << endl;}