Submission #84904
Source Code Expand
#include <iostream> #include <vector> #include <algorithm> #include <iomanip> #include <cstdlib> #include <cmath> using namespace std; #define MAX_V 500 #define INF 999999999 struct edge{ int to, cap; double cost; int rev; }; int V; vector<edge> G[MAX_V]; double dist[MAX_V]; int prevv[MAX_V], preve[MAX_V]; void add_edge(int from, int to, int cap, double cost){ G[from].push_back((edge){to, cap, cost, G[to].size()}); G[to].push_back((edge){from, 0, -cost, G[from].size() - 1}); } double min_cost_flow(int s, int g, int f){ double res = 0; while(f > 0){ fill(dist , dist + V , INF); dist[s] = 0; bool update = true; while(update){ update = false; for(int v = 0; v < V; v++){ if(dist[v] == INF) continue; for(int i = 0; i < G[v].size(); i++){ edge &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; } } } } if(dist[g]== INF){ return -1; } int d = f; for(int v = g; v != s; v = prevv[v]){ d = min(d, G[prevv[v]][preve[v]].cap); } f -= d; res += d * dist[g]; for(int v = g; v != s; v = prevv[v]){ edge &e = G[prevv[v]][preve[v]]; e.cap -= d; G[v][e.rev].cap += d; } } return res; } int main(){ int n; while(cin >> n){ double x[n], y[n]; for(int i = 0; i < MAX_V; i++){ G[i].clear(); } for(int i = 0; i < n; i++){ cin >> x[i] >> y[i]; } //index //[0] : s //[1] : t //[2] ~ [2 + n - 1] : left //[2 + n] ~ [2 + n + n - 1] : right //s -> left for(int i = 2; i <= 2 + n - 1; i++){ add_edge(0, i, 1, 0); } //right -> t for(int i = 2 + n; i <= 2 + n + n - 1; i++){ add_edge(i, 1, 1, 0); } //left -> right for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(i == j){ add_edge(2 + i, 2 + n + j, 1, abs(x[i])); continue; } bool leftFlg = (x[i] < 0); bool rightFlg = (x[j] > 0); if(leftFlg && rightFlg){ double dist = sqrt(pow(abs(y[i] - y[j]) / 2.0, 2) + pow(abs(abs(x[i]) - abs(x[j])) / 2.0, 2)); add_edge(2 + i, 2 + n + j, 1, 2 * dist); } else if(!leftFlg && !rightFlg){ add_edge(2 + i, 2 + n + j, 1, 0); } } } V = n * 2 + 2; cout << fixed << setprecision(10) << min_cost_flow(0, 1, n) << endl; } }
Submission Info
Submission Time | |
---|---|
Task | B - 玉座の間 |
User | Respect2D |
Language | C++ (G++ 4.6.4) |
Score | 200 |
Code Size | 2726 Byte |
Status | AC |
Exec Time | 48 ms |
Memory | 1152 KB |
Judge Result
Set Name | Subtask1 | Subtask2 | Subtask3 | Subtask4 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 50 / 50 | 50 / 50 | 50 / 50 | 50 / 50 | ||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Subtask1 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt |
Subtask2 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt |
Subtask3 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt |
Subtask4 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt, 41_rand00.txt, 41_rand01.txt, 41_rand02.txt, 41_rand03.txt, 41_rand04.txt, 41_rand05.txt, 41_rand06.txt, 41_rand07.txt, 41_rand08.txt, 41_rand09.txt, 41_rand10.txt, 41_rand11.txt, 41_rand12.txt, 41_rand13.txt, 41_rand14.txt, 41_rand15.txt, 41_rand16.txt, 41_rand17.txt, 41_rand18.txt, 41_rand19.txt, 41_rand20.txt, 41_rand21.txt, 41_rand22.txt, 41_rand23.txt, 41_rand24.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
11_rand00.txt | AC | 37 ms | 744 KB |
11_rand01.txt | AC | 22 ms | 788 KB |
11_rand02.txt | AC | 23 ms | 780 KB |
11_rand03.txt | AC | 23 ms | 780 KB |
11_rand04.txt | AC | 23 ms | 756 KB |
11_rand05.txt | AC | 23 ms | 764 KB |
11_rand06.txt | AC | 23 ms | 784 KB |
11_rand07.txt | AC | 21 ms | 780 KB |
11_rand08.txt | AC | 22 ms | 912 KB |
11_rand09.txt | AC | 22 ms | 780 KB |
11_rand10.txt | AC | 40 ms | 740 KB |
11_rand11.txt | AC | 22 ms | 788 KB |
11_rand12.txt | AC | 21 ms | 764 KB |
11_rand13.txt | AC | 23 ms | 768 KB |
11_rand14.txt | AC | 22 ms | 780 KB |
11_rand15.txt | AC | 21 ms | 760 KB |
11_rand16.txt | AC | 23 ms | 784 KB |
11_rand17.txt | AC | 22 ms | 788 KB |
11_rand18.txt | AC | 23 ms | 780 KB |
11_rand19.txt | AC | 23 ms | 784 KB |
11_rand20.txt | AC | 23 ms | 784 KB |
11_rand21.txt | AC | 22 ms | 788 KB |
11_rand22.txt | AC | 21 ms | 812 KB |
11_rand23.txt | AC | 22 ms | 780 KB |
11_rand24.txt | AC | 20 ms | 768 KB |
21_rand00.txt | AC | 22 ms | 788 KB |
21_rand01.txt | AC | 22 ms | 780 KB |
21_rand02.txt | AC | 40 ms | 784 KB |
21_rand03.txt | AC | 23 ms | 788 KB |
21_rand04.txt | AC | 22 ms | 788 KB |
21_rand05.txt | AC | 22 ms | 916 KB |
21_rand06.txt | AC | 23 ms | 784 KB |
21_rand07.txt | AC | 22 ms | 764 KB |
21_rand08.txt | AC | 22 ms | 784 KB |
21_rand09.txt | AC | 22 ms | 756 KB |
21_rand10.txt | AC | 23 ms | 792 KB |
21_rand11.txt | AC | 22 ms | 788 KB |
21_rand12.txt | AC | 22 ms | 784 KB |
21_rand13.txt | AC | 23 ms | 784 KB |
21_rand14.txt | AC | 22 ms | 764 KB |
21_rand15.txt | AC | 22 ms | 784 KB |
21_rand16.txt | AC | 22 ms | 784 KB |
21_rand17.txt | AC | 22 ms | 780 KB |
21_rand18.txt | AC | 20 ms | 788 KB |
21_rand19.txt | AC | 22 ms | 788 KB |
21_rand20.txt | AC | 22 ms | 788 KB |
21_rand21.txt | AC | 27 ms | 780 KB |
21_rand22.txt | AC | 22 ms | 784 KB |
21_rand23.txt | AC | 39 ms | 760 KB |
21_rand24.txt | AC | 21 ms | 784 KB |
31_rand00.txt | AC | 33 ms | 740 KB |
31_rand01.txt | AC | 20 ms | 784 KB |
31_rand02.txt | AC | 22 ms | 780 KB |
31_rand03.txt | AC | 22 ms | 788 KB |
31_rand04.txt | AC | 22 ms | 764 KB |
31_rand05.txt | AC | 22 ms | 756 KB |
31_rand06.txt | AC | 22 ms | 784 KB |
31_rand07.txt | AC | 22 ms | 784 KB |
31_rand08.txt | AC | 20 ms | 784 KB |
31_rand09.txt | AC | 22 ms | 812 KB |
31_rand10.txt | AC | 23 ms | 764 KB |
31_rand11.txt | AC | 22 ms | 916 KB |
31_rand12.txt | AC | 22 ms | 788 KB |
31_rand13.txt | AC | 24 ms | 788 KB |
31_rand14.txt | AC | 22 ms | 788 KB |
31_rand15.txt | AC | 21 ms | 780 KB |
31_rand16.txt | AC | 20 ms | 732 KB |
31_rand17.txt | AC | 22 ms | 736 KB |
31_rand18.txt | AC | 20 ms | 784 KB |
31_rand19.txt | AC | 20 ms | 776 KB |
31_rand20.txt | AC | 21 ms | 784 KB |
31_rand21.txt | AC | 21 ms | 780 KB |
31_rand22.txt | AC | 22 ms | 788 KB |
31_rand23.txt | AC | 21 ms | 780 KB |
31_rand24.txt | AC | 21 ms | 756 KB |
41_rand00.txt | AC | 23 ms | 756 KB |
41_rand01.txt | AC | 23 ms | 764 KB |
41_rand02.txt | AC | 23 ms | 912 KB |
41_rand03.txt | AC | 25 ms | 864 KB |
41_rand04.txt | AC | 26 ms | 912 KB |
41_rand05.txt | AC | 23 ms | 916 KB |
41_rand06.txt | AC | 22 ms | 916 KB |
41_rand07.txt | AC | 30 ms | 1048 KB |
41_rand08.txt | AC | 22 ms | 732 KB |
41_rand09.txt | AC | 36 ms | 900 KB |
41_rand10.txt | AC | 21 ms | 776 KB |
41_rand11.txt | AC | 25 ms | 892 KB |
41_rand12.txt | AC | 30 ms | 1044 KB |
41_rand13.txt | AC | 22 ms | 784 KB |
41_rand14.txt | AC | 23 ms | 888 KB |
41_rand15.txt | AC | 41 ms | 740 KB |
41_rand16.txt | AC | 48 ms | 748 KB |
41_rand17.txt | AC | 25 ms | 912 KB |
41_rand18.txt | AC | 36 ms | 1152 KB |
41_rand19.txt | AC | 36 ms | 1040 KB |
41_rand20.txt | AC | 24 ms | 908 KB |
41_rand21.txt | AC | 22 ms | 888 KB |
41_rand22.txt | AC | 22 ms | 888 KB |
41_rand23.txt | AC | 30 ms | 1016 KB |
41_rand24.txt | AC | 26 ms | 1040 KB |