結果
問題 | No.1676 Coin Trade (Single) |
ユーザー |
![]() |
提出日時 | 2021-09-10 22:48:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 244 ms / 2,000 ms |
コード長 | 689 bytes |
コンパイル時間 | 4,305 ms |
コンパイル使用メモリ | 267,116 KB |
最終ジャッジ日時 | 2025-01-24 11:56:58 |
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 35 |
ソースコード
#include<bits/stdc++.h> #include<atcoder/all> using namespace std; using namespace atcoder; typedef long long ll; int main(){ ll INF=1000000000; int N,K; cin>>N>>K; mcf_graph<int,ll> G(N*3+2); int m; ll a; int x; G.add_edge(N*3,N*2,K,0); G.add_edge(N*3-1,N*3+1,K,INF); for(int i=0;i<N;i++){ cin>>a>>m; if(i){ G.add_edge(N*2+i-1,N*2+i,K,INF); } G.add_edge(N*2+i,i,K,a); G.add_edge(i,i+N,K,0); if(i+1==N){ G.add_edge(i+N,N*3+1,K,INF-a); }else{ G.add_edge(i+N,N*2+i+1,K,INF-a); } for(int j=0;j<m;j++){ cin>>x; G.add_edge(x+N-1,i,1,INF*(i-x+1)); } } cout<<INF*N*K-G.flow(N*3,N*3+1,K).second<<"\n"; }