結果

問題 No.654 Air E869120
ユーザー pote-bokko
提出日時 2024-03-06 20:50:33
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 4,394 bytes
コンパイル時間 2,751 ms
コンパイル使用メモリ 222,816 KB
最終ジャッジ日時 2025-02-20 01:23:05
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 5
other AC * 16 TLE * 1 -- * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

// STL
#include <bits/stdc++.h>
using namespace std;
// // ACL()
// #include <atcoder/all>
// using namespace atcoder;
// for
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define per(i, n) for (ll i = (ll)(n-1); i >= 0; i--)
// vector
#define all(x) x.begin(), x.end()
// ()
using ll = long long;
using pii = pair<ll, ll>;
using pll = pair<long long, long long>;
using vi = vector<ll>;
using vl = vector<long long>;
using vs = vector<string>;
using vc = vector<char>;
using vpii = vector<pair<ll, ll>>;
using vpll = vector<pair<long long, long long>>;
using vpsi = vector<pair<string, ll>>;
using vvi = vector<vector<ll>>;
using vvpii = vector<vector<pair<ll, ll>>>;
using vvl = vector<vector<long long>>;
using vvc = vector<vector<char>>;
template<typename T>
using priority_queue_up = priority_queue<T, vector<T>, greater<T>>;
// MOD使
#define MOD 1000000007
#define MOD2 998244353
// YES-NO使(fTrueYes)
void cout_yn(bool f){
if(f)cout << "Yes" << endl;
else cout << "No" << endl;
}
//
void dfs_preorder(ll v, vvi &tree, vi &output){
output.push_back(v);
rep(i, tree[v].size()){
dfs_preorder(tree[v][i], tree, output);
}
}
//
void dfs_postorder(ll v, vvi &tree, vi &output){
rep(i, tree[v].size()){
dfs_preorder(tree[v][i], tree, output);
}
output.push_back(v);
}
// nm.
// 1-indexed.
vector<vector<ll>> input_undir_graph(ll n, ll m){
ll a, b;
vector<vector<ll>> g(n);
rep(i, m){
cin >> a >> b;
a--, b--;
g[a].push_back(b); // a->b
g[b].push_back(a); // b->a
}
return g;
}
// nm.
// 1-indexed.
vector<vector<ll>> input_dir_graph(ll n, ll m){
ll a, b;
vector<vector<ll>> g(n);
rep(i, m){
cin >> a >> b;
a--, b--;
g[a].push_back(b); // a->b
}
return g;
}
#define INF 1e18
struct edge{
ll to, cap, q, rev;
};
vector<map<ll, vector<edge>>> G;
vector<map<ll, ll>> used;
ll n, m;
ll d;
void add_edge(ll u, ll v, ll c, ll p, ll q){
G[u][p].push_back((edge){v, c, q, (ll)(G[v][q].size())});
G[v][q].push_back((edge){u, 0, p, (ll)(G[u][p].size()-1)});
}
ll dfs(ll v, ll p, ll t, ll tq, ll f){
if(v == t && p == tq){
return f;
}
used[v][p] = 1;
rep(i, G[v][p].size()){
edge &e = G[v][p][i];
if(e.cap > 0 && !used[e.to][e.q]){
ll w = dfs(e.to, e.q, t, tq, min(f, e.cap));
if(w > 0){
G[v][p][i].cap -= w;
G[e.to][e.q][e.rev].cap += w;
return w;
}
}
}
return 0;
}
ll max_flow(ll s, ll p, ll t, ll tq){
ll flow = 0;
int cnt = 0;
for(;;){
for(ll i=0; i<n; i++)used[i].clear();
ll f = dfs(s, p, t, tq, INF);
if(f == 0)return flow;
flow += f;
}
}
// main
int main(void){
cin >> n >> m >> d;
G.resize(n);
vector<set<ll>> time(n);
used.resize(n);
ll u, v, p, q, w;
rep(i, m){
cin >> u >> v >> p >> q >> w;
u--, v--;
add_edge(u, v, w, p, q+d);
time[u].insert(p);
time[v].insert(q+d);
}
rep(i, n){
for(auto itr=time[i].begin(); itr!=--(time[i].end()); itr++){
auto nx = itr; ++nx;
add_edge(i, i, INF, *itr, *nx);
}
}
/* cout << endl; */
/* rep(i, n){ */
/* for(auto itr=G[i].begin(); itr!=G[i].end(); itr++){ */
/* auto nx = itr; ++nx; */
/* cout << i << " " << itr->first << " " << nx->first << endl; */
/* add_edge(i, i, INF, itr->first, nx->first); */
/* if(nx == G[i].end())break; */
/* } */
/* } */
rep(i, n){
for(auto itr=G[i].begin(); itr!=G[i].end(); itr++){
ll p = itr->first;
vector<edge> E = itr->second;
}
}
cout << max_flow(0, *time[0].begin(), n-1, *(--(time[n-1].end()))) << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0