結果
| 問題 |
No.654 Air E869120
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-05-07 13:46:21 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,426 bytes |
| コンパイル時間 | 1,625 ms |
| コンパイル使用メモリ | 175,532 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-06 18:05:29 |
| 合計ジャッジ時間 | 3,086 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 WA * 1 |
| other | AC * 11 WA * 24 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define ll long long
#define MOD 1000000007
#define MOD2 998244353
#define INF 1e9
struct edge{
ll to, cap, rev, p, q;
};
vector<vector<edge>> G;
vector<ll> used;
ll n, m;
void add_edge(ll u, ll v, ll c, ll p, ll q){
G[u].push_back((edge){v, c, (ll)G[v].size(), p, q});
G[v].push_back((edge){u, 0, (ll)G[u].size()-1, (ll)INF, p});
}
ll dfs(ll v, ll t, ll f, int time){
if(time > 1e9)return 0;
if(v == t)return f;
used[v] = 1;
rep(i, G[v].size()){
edge &e = G[v][i];
if(time > G[v][i].p) continue;
if(e.cap > 0 && !used[e.to]){
ll d = dfs(e.to, t, min(f, e.cap), G[v][i].q);
if(d > 0){
G[v][i].cap -= d;
G[e.to][e.rev].cap += d;
return d;
}
}
}
return 0;
}
ll max_flow(ll s, ll t){
ll flow = 0;
for(;;){
for(ll i=0; i<n; i++)used[i] = 0;
ll f = dfs(s, t, INF, 0);
if(f == 0)return flow;
flow += f;
}
}
int main(void){
ll d;
cin >> n >> m >> d;
G.resize(n);
used.resize(n);
rep(i, m){
ll u, v, p, q, w;
cin >> u >> v >> p >> q >> w;
u--, v--;
if(u != 0)add_edge(u, v, w, p-d, q);
else add_edge(u, v, w, p, q);
}
cout << max_flow(0, n-1) << endl;
return 0;
}