結果
| 問題 |
No.3201 Corporate Synergy
|
| コンテスト | |
| ユーザー |
Andrew8128
|
| 提出日時 | 2025-07-11 22:23:30 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,339 bytes |
| コンパイル時間 | 1,299 ms |
| コンパイル使用メモリ | 117,368 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-07-11 22:23:36 |
| 合計ジャッジ時間 | 2,133 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 7 WA * 13 |
ソースコード
#include <iostream>
using std::cerr, std::cin, std::cout, std::endl, std::fixed, std::flush;
#include <vector>
using std::vector;
static_assert(sizeof(long) == 8);
#include <atcoder/maxflow>
using namespace atcoder;
constexpr long LINF = 4'610'000'000'000'000'000;
int main()
{
int N;
cin >> N;
vector<long> P(N);
for (int i = 0; i < N; i++)
{
cin >> P[i];
}
int M;
cin >> M;
vector<long> U(M), V(M);
for (int i = 0; i < M; i++)
{
cin >> U[i] >> V[i];
U[i]--, V[i]--;
}
int K;
cin >> K;
vector<long> A(K), B(K), S(K);
for (int i = 0; i < K; i++)
{
cin >> A[i] >> B[i] >> S[i];
A[i]--, B[i]--;
}
mf_graph<long> g(N + K + 2);
long geta = 0;
for (int i = 0; i < N; i++)
{
if (P[i] > 0)
{
geta += P[i];
g.add_edge(i, N + K + 1, P[i]);
}
else
{
g.add_edge(N + K, i, -P[i]);
}
}
for (int i = 0; i < M; i++)
{
g.add_edge(V[i], U[i], LINF);
}
for (int i = 0; i < K; i++)
{
geta += S[i];
g.add_edge(N + i, N + K + 1, S[i]);
g.add_edge(A[i], N + i, LINF);
g.add_edge(B[i], N + i, LINF);
g.add_edge(N + i, A[i], LINF);
g.add_edge(N + i, B[i], LINF);
}
cout << geta - g.flow(N + K, N + K + 1) << '\n';
return 0;
}
/*
File : ~/kyopro/yukicoder/554/3201.cpp
Date : 2025/07/11
Time : 22:03:40
*/
Andrew8128