Submission #1346749
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define rep(i,n) repl(i,0,n)
#define mp(a,b) make_pair((a),(b))
#define pb(a) push_back((a))
#define all(x) (x).begin(),(x).end()
#define uniq(x) sort(all(x)),(x).erase(unique(all(x)),end(x))
#define fi first
#define se second
#define dbg(x) cout<<#x" = "<<((x))<<endl
template<class T,class U> ostream& operator<<(ostream& o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;}
template<class T> ostream& operator<<(ostream& o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;}
#define INF 21474836
template<typename T>
class MinCostFlow{
private:
struct edge{int to; T cap, cost; int rev;};
using P = pair<int,int>;
vector<vector<edge> > Graph;
vector<int> prevv, preve;
vector<T> h, d; // ポテンシャル,最短距離
public:
MinCostFlow(int v){
// 頂点数vで初期化
Graph.resize(v);
prevv.resize(v);
preve.resize(v);
h.resize(v);
d.resize(v);
}
T min_cost_flow(int s, int t, T f){
T res = 0;
fill(all(h), 0);
rep(v,Graph.size()){
rep(j,Graph[v].size()){
edge &e = Graph[v][j];
if(e.cap==0) continue;
int u = e.to;
h[u] = min(h[u],h[v]+e.cost);
}
}
while(f>0){
priority_queue<P, vector<P>, greater<P>> pq;
fill(all(d), INF);
d[s] = 0;
pq.push(mp(0,s));
while(!pq.empty()){
auto p = pq.top(); pq.pop();
int v = p.se;
if(d[v] < p.fi) continue;
rep(i,Graph[v].size()){
edge &e = Graph[v][i];
if(e.cap > 0 && d[e.to] > d[v] + e.cost + h[v] - h[e.to]){
d[e.to] = d[v] + e.cost + h[v] - h[e.to];
prevv[e.to] = v;
preve[e.to] = i;
pq.push(mp(d[e.to], e.to));
}
}
}
if(d[t] == INF) return 0;
rep(i,Graph.size()) h[i] += d[i];
T nf = f;
for(int v=t; v!=s; v = prevv[v]){
nf = min(nf, Graph[prevv[v]][preve[v]].cap);
}
f -= nf;
res += nf * h[t];
for(int v=t; v!=s; v=prevv[v]){
edge &e = Graph[prevv[v]][preve[v]];
e.cap -= nf;
Graph[v][e.rev].cap += nf;
}
}
return res;
}
void add_edge(int from ,int to, T cap, T cost){
Graph[from].pb(((edge){to, cap, cost, (int)Graph[to].size()}));
Graph[to].pb(((edge){from, 0, -cost, (int)Graph[from].size()-1}));
}
};
int main(){
int n,m;
cin>>m;
vector<int> sx(m),sy(m);
rep(i,m) cin>>sx[i]>>sy[i];
cin>>n;
vector<int> x(n),y(n),s(n),t(n);
rep(i,n) cin>>x[i]>>y[i]>>s[i]>>t[i];
MinCostFlow<int> flow(2*n+m+2);
// s:2*n+m t:2*n+m+1
rep(i,m) flow.add_edge(2*n+m, 2*n+i, 1, 0);
rep(i,m) flow.add_edge(2*n+i, 2*n+m+1, 1, 0);
rep(i,m)rep(j,n){
int d = abs(sx[i]-x[j]) + abs(sy[i]-y[j]);
if(d <= s[j]) flow.add_edge(2*n+i, 2*j, 1, 0);
}
rep(i,n) repl(j,i+1,n){
int d = abs(x[i]-x[j]) + abs(y[i]-y[j]);
if(d <= s[j]-t[i]) flow.add_edge(2*i+1, 2*j, 1, 0);
}
rep(i,n) flow.add_edge(2*i, 2*i+1, 1, -1);
rep(i,n) flow.add_edge(2*i+1, 2*n+m+1, 1, 0);
int res = flow.min_cost_flow(2*n+m, 2*n+m+1, m);
if(res == -n) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - ラボライブ タフグローバルフェスティバル |
User |
tossy |
Language |
C++14 (GCC 5.4.1) |
Score |
200 |
Code Size |
3373 Byte |
Status |
AC |
Exec Time |
121 ms |
Memory |
26372 KB |
Judge Result
Set Name |
All |
Score / Max Score |
200 / 200 |
Status |
|
Set Name |
Test Cases |
All |
scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, scrambled_43.txt, scrambled_44.txt, scrambled_45.txt, scrambled_46.txt, scrambled_47.txt, scrambled_48.txt, scrambled_49.txt, scrambled_50.txt, scrambled_51.txt, scrambled_52.txt, scrambled_53.txt |
Case Name |
Status |
Exec Time |
Memory |
scrambled_00.txt |
AC |
1 ms |
256 KB |
scrambled_01.txt |
AC |
6 ms |
256 KB |
scrambled_02.txt |
AC |
1 ms |
256 KB |
scrambled_03.txt |
AC |
116 ms |
24676 KB |
scrambled_04.txt |
AC |
114 ms |
25184 KB |
scrambled_05.txt |
AC |
114 ms |
24804 KB |
scrambled_06.txt |
AC |
121 ms |
25732 KB |
scrambled_07.txt |
AC |
119 ms |
26372 KB |
scrambled_08.txt |
AC |
1 ms |
256 KB |
scrambled_09.txt |
AC |
1 ms |
256 KB |
scrambled_10.txt |
AC |
1 ms |
256 KB |
scrambled_11.txt |
AC |
1 ms |
256 KB |
scrambled_12.txt |
AC |
1 ms |
256 KB |
scrambled_13.txt |
AC |
1 ms |
384 KB |
scrambled_14.txt |
AC |
1 ms |
256 KB |
scrambled_15.txt |
AC |
1 ms |
256 KB |
scrambled_16.txt |
AC |
1 ms |
256 KB |
scrambled_17.txt |
AC |
1 ms |
256 KB |
scrambled_18.txt |
AC |
1 ms |
256 KB |
scrambled_19.txt |
AC |
1 ms |
256 KB |
scrambled_20.txt |
AC |
2 ms |
384 KB |
scrambled_21.txt |
AC |
1 ms |
256 KB |
scrambled_22.txt |
AC |
1 ms |
256 KB |
scrambled_23.txt |
AC |
18 ms |
9360 KB |
scrambled_24.txt |
AC |
7 ms |
2560 KB |
scrambled_25.txt |
AC |
52 ms |
16396 KB |
scrambled_26.txt |
AC |
9 ms |
3456 KB |
scrambled_27.txt |
AC |
9 ms |
2828 KB |
scrambled_28.txt |
AC |
12 ms |
5828 KB |
scrambled_29.txt |
AC |
20 ms |
9528 KB |
scrambled_30.txt |
AC |
9 ms |
5632 KB |
scrambled_31.txt |
AC |
23 ms |
11296 KB |
scrambled_32.txt |
AC |
7 ms |
3968 KB |
scrambled_33.txt |
AC |
10 ms |
4608 KB |
scrambled_34.txt |
AC |
3 ms |
1152 KB |
scrambled_35.txt |
AC |
8 ms |
3968 KB |
scrambled_36.txt |
AC |
6 ms |
2304 KB |
scrambled_37.txt |
AC |
2 ms |
384 KB |
scrambled_38.txt |
AC |
1 ms |
256 KB |
scrambled_39.txt |
AC |
1 ms |
256 KB |
scrambled_40.txt |
AC |
1 ms |
256 KB |
scrambled_41.txt |
AC |
1 ms |
256 KB |
scrambled_42.txt |
AC |
1 ms |
256 KB |
scrambled_43.txt |
AC |
1 ms |
256 KB |
scrambled_44.txt |
AC |
1 ms |
256 KB |
scrambled_45.txt |
AC |
1 ms |
256 KB |
scrambled_46.txt |
AC |
1 ms |
256 KB |
scrambled_47.txt |
AC |
1 ms |
256 KB |
scrambled_48.txt |
AC |
1 ms |
256 KB |
scrambled_49.txt |
AC |
1 ms |
256 KB |
scrambled_50.txt |
AC |
1 ms |
256 KB |
scrambled_51.txt |
AC |
1 ms |
256 KB |
scrambled_52.txt |
AC |
35 ms |
18048 KB |
scrambled_53.txt |
AC |
1 ms |
256 KB |