Submission #371303
Source Code Expand
#include <algorithm>
#define REP(i,n) for(int i=0; i<(int)(n); i++)
#include <queue>
#include <cstdio>
inline int getInt(){ int s; scanf("%d", &s); return s; }
#include <set>
using namespace std;
struct Edge{
int cap; // capacity
int to;
int rev; // reverse edge id
Edge(){}
Edge(int c, int t, int r) :
cap(c), to(t), rev(r){}
};
struct CostEdge : public Edge{
int cost;
CostEdge() : Edge() {}
CostEdge(int c, int t, int cs, int r) :
Edge(c, t, r), cost(cs){}
};
template<class E> // Edge type
class Graph{
public:
typedef std::vector<std::vector<E> > G;
private:
G g;
public:
Graph(int n) : g(G(n)) {}
void addEdge(int from, int to, int cap){
g[from].push_back(E(cap, to, g[to].size()));
g[to].push_back(E(0, from, g[from].size() - 1));
}
void addEdge(int from, int to, int cap, int cost){
g[from].push_back(E(cap, to, cost, g[to].size()));
g[to].push_back(E(0, from, -cost, g[from].size() - 1));
}
G &getRowGraph(){
return g;
}
};
template<class E>
int minCostFlow(Graph<E> &graph, int s, int t, int f, bool negative = false){
typedef pair<int, int> P;
typename Graph<E>::G &g = graph.getRowGraph();
int n = g.size();
int res = 0;
vector<int> h(n, 0);
vector<int> prevv(n);
vector<int> preve(n);
const int inf = 10000000;
if(negative){
vector<int> dist(n, inf);
dist[s] = 0;
bool update = true;
while(update){
update = false;
for(int v = 0; v < n; v++){
if(dist[v] == inf) continue;
for(int i = 0; i < (int)g[v].size(); i++){
E &e = g[v][i];
if(e.cap > 0 && dist[e.to] > dist[v] + e.cost){
dist[e.to] = dist[v] + e.cost;
prevv[e.to] = v;
preve[e.to] = i;
update = true;
}
}
}
}
for(int i = 0; i < n; i++)
h[i] = dist[i];
}
while(f > 0){
priority_queue<P, vector<P>, greater<P> > que;
vector<int> dist(n, inf);
dist[s] = 0;
que.push(P(0, s));
while(!que.empty()){
P p = que.top(); que.pop();
int v = p.second;
if(dist[v] < p.first) continue;
for(int i = 0; i < (int)g[v].size(); i++){
E &e = g[v][i];
if(e.cap > 0 && dist[e.to] > dist[v] + e.cost + h[v] - h[e.to]){
dist[e.to] = dist[v] + e.cost + h[v] - h[e.to];
prevv[e.to] = v;
preve[e.to] = i;
que.push(P(dist[e.to], e.to));
}
}
}
if(dist[t] == inf){
return -1;
}
for(int v = 0; v < n; v++) h[v] += dist[v];
int d = f;
for(int v = t; v != s; v = prevv[v]){
d = min(d, g[prevv[v]][preve[v]].cap);
}
f -= d;
res += d * h[t];
for(int v = t; v != s; v = prevv[v]){
E &e = g[prevv[v]][preve[v]];
e.cap -= d;
g[v][e.rev].cap += d;
}
}
return res;
}
template<typename T>
inline T dbl(T t){ return t * t; }
bool canReach(int x1, int y1, int x2, int y2, int t){
return dbl(x1 - x2) + dbl(y1 - y2) <= dbl(t);
}
int main(){
const int m = getInt();
vector<int> rx(m);
vector<int> ry(m);
REP(i,m){
rx[i] = getInt();
ry[i] = getInt();
}
const int n = getInt();
vector<int> px(n);
vector<int> py(n);
vector<int> s(n);
vector<int> t(n);
REP(i,n){
px[i] = getInt();
py[i] = getInt();
s[i] = getInt();
t[i] = getInt();
}
Graph<CostEdge> g(2 + m + n);
const int start = n + m;
const int goal = n + m + 1;
REP(i,m)
g.addEdge(start, n + i, 1, 0);
REP(i,m) REP(j,n){
if(canReach(rx[i], ry[i], px[j], py[j], s[j]))
g.addEdge(n + i, j, 1, -1);
}
REP(i,n) REP(j,n){
if(s[i] >= t[j]){
if(canReach(px[j], py[j], px[i], py[i], s[i] - t[j]))
g.addEdge(j, i, 1, -1);
}
}
REP(i,n) g.addEdge(i, goal, 1, 0);
const int cost = minCostFlow(g, start, goal, m, true);
puts(-cost == n ? "YES" : "NO");
// printf("%s\n", -cost == m ? );
return 0;
}
Submission Info
Submission Time
2015-03-29 13:21:37+0900
Task
D - ラボライブ タフグローバルフェスティバル
User
yukim
Language
C++ (GCC 4.9.2)
Score
0
Code Size
4143 Byte
Status
WA
Exec Time
390 ms
Memory
21144 KB
Compile Error
./Main.cpp: In function ‘int getInt()’:
./Main.cpp:6:44: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
inline int getInt(){ int s; scanf("%d", &s); return s; }
^
Judge Result
Set Name
All
Score / Max Score
0 / 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
25 ms
672 KB
scrambled_01.txt
AC
23 ms
912 KB
scrambled_02.txt
AC
24 ms
796 KB
scrambled_03.txt
AC
285 ms
20868 KB
scrambled_04.txt
WA
286 ms
20968 KB
scrambled_05.txt
WA
284 ms
20864 KB
scrambled_06.txt
AC
388 ms
21144 KB
scrambled_07.txt
WA
390 ms
21144 KB
scrambled_08.txt
AC
24 ms
676 KB
scrambled_09.txt
WA
26 ms
804 KB
scrambled_10.txt
AC
25 ms
800 KB
scrambled_11.txt
WA
25 ms
808 KB
scrambled_12.txt
WA
25 ms
800 KB
scrambled_13.txt
AC
24 ms
924 KB
scrambled_14.txt
WA
23 ms
800 KB
scrambled_15.txt
AC
24 ms
796 KB
scrambled_16.txt
AC
25 ms
800 KB
scrambled_17.txt
AC
25 ms
800 KB
scrambled_18.txt
AC
26 ms
808 KB
scrambled_19.txt
AC
24 ms
928 KB
scrambled_20.txt
AC
26 ms
936 KB
scrambled_21.txt
AC
24 ms
924 KB
scrambled_22.txt
AC
26 ms
932 KB
scrambled_23.txt
AC
69 ms
10648 KB
scrambled_24.txt
AC
39 ms
3508 KB
scrambled_25.txt
AC
137 ms
15648 KB
scrambled_26.txt
AC
44 ms
4000 KB
scrambled_27.txt
AC
44 ms
3664 KB
scrambled_28.txt
AC
49 ms
5416 KB
scrambled_29.txt
AC
75 ms
11336 KB
scrambled_30.txt
AC
46 ms
5288 KB
scrambled_31.txt
AC
81 ms
12832 KB
scrambled_32.txt
AC
40 ms
4336 KB
scrambled_33.txt
AC
51 ms
6572 KB
scrambled_34.txt
AC
29 ms
1952 KB
scrambled_35.txt
AC
44 ms
5800 KB
scrambled_36.txt
AC
37 ms
3748 KB
scrambled_37.txt
AC
24 ms
1056 KB
scrambled_38.txt
AC
24 ms
672 KB
scrambled_39.txt
AC
23 ms
796 KB
scrambled_40.txt
WA
25 ms
812 KB
scrambled_41.txt
AC
24 ms
796 KB
scrambled_42.txt
AC
22 ms
796 KB
scrambled_43.txt
AC
26 ms
676 KB
scrambled_44.txt
AC
24 ms
700 KB
scrambled_45.txt
AC
24 ms
800 KB
scrambled_46.txt
AC
25 ms
796 KB
scrambled_47.txt
AC
24 ms
920 KB
scrambled_48.txt
AC
25 ms
916 KB
scrambled_49.txt
AC
25 ms
680 KB
scrambled_50.txt
AC
26 ms
808 KB
scrambled_51.txt
AC
24 ms
736 KB
scrambled_52.txt
AC
100 ms
17184 KB
scrambled_53.txt
AC
22 ms
920 KB