Submission #83872


Source Code Expand

#include <cstdio>
#include <vector>
#include <queue>
#include <cmath>
#include <algorithm>

using namespace std;

struct edge {
    int to;
    int cap;
    double cost;
    int rev;
};

int V;
vector <edge> g[202];
double h[202];
double dist[202];
int prevv[202];
int preve[202];

double d(double x1, double y1, double x2, double y2)
{
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1-  y2));
}

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 t, int f)
{
    int i;
    double res = 0;
    
    for (i = 0; i < V; i++) h[i] = 0;
    
    while (f > 0) {
        int d = f;
        priority_queue <pair<double, int> > q;
        
        for (i = 0; i < V; i++) dist[i] = 1e9;
        
        dist[s] = 0;
        
        q.push(make_pair(0, s));
        
        while (!q.empty()) {
            double c = -q.top().first;
            int v = q.top().second;
            
            q.pop();
            
            if (dist[v] < c) continue;
            
            for (i = 0; i < g[v].size(); i++) {
                edge &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;
                    q.push(make_pair(-dist[e.to], e.to));
                }
            }
        }
        
        if (dist[t] == 1e9) return -1;
        
        for (i = 0; i < V; i++) h[i] += dist[i];
        
        for (i = t; i != s; i = prevv[i]) d = min(d, g[prevv[i]][preve[i]].cap);
        
        f -= d;
        
        res += d * h[t];
        
        for (i = t; i != s; i = prevv[i]) {
            edge &e = g[prevv[i]][preve[i]];
            e.cap -= d;
            g[i][e.rev].cap += d;
        }
    }
    
    return res;
}

int main()
{
    int n, i, j;
    int a[100][2];
    
    scanf("%d", &n);
    
    for (i = 0; i < n; i++) scanf("%d %d", &a[i][0], &a[i][1]);
    
    V = n * 2 + 2;
    
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (i == j) {
                add_edge(i, n + j, 1, d(a[i][0], a[i][1], 0, a[i][1]));
            } else {
                add_edge(i, n + j, 1, d(a[i][0], a[i][1], -a[j][0], a[j][1]) / 2);
            }
        }
    }
    
    for (i = 0; i < n; i++) {
        add_edge(V - 1, i, 1, 0);
        add_edge(n + i, V - 2, 1, 0);
    }
    
    printf("%.12lf\n", min_cost_flow(V - 1, V - 2, n));
    
    return 0;
}

Submission Info

Submission Time
Task B - 玉座の間
User kawatea
Language C++ (G++ 4.6.4)
Score 200
Code Size 2797 Byte
Status AC
Exec Time 105 ms
Memory 1480 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:96:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:98:63: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 50 / 50 50 / 50 50 / 50 50 / 50
Status
AC × 25
AC × 50
AC × 75
AC × 100
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 21 ms 780 KB
11_rand01.txt AC 65 ms 728 KB
11_rand02.txt AC 55 ms 732 KB
11_rand03.txt AC 24 ms 764 KB
11_rand04.txt AC 63 ms 724 KB
11_rand05.txt AC 22 ms 780 KB
11_rand06.txt AC 21 ms 780 KB
11_rand07.txt AC 21 ms 628 KB
11_rand08.txt AC 21 ms 776 KB
11_rand09.txt AC 21 ms 784 KB
11_rand10.txt AC 25 ms 780 KB
11_rand11.txt AC 22 ms 780 KB
11_rand12.txt AC 22 ms 740 KB
11_rand13.txt AC 23 ms 768 KB
11_rand14.txt AC 24 ms 728 KB
11_rand15.txt AC 25 ms 760 KB
11_rand16.txt AC 22 ms 784 KB
11_rand17.txt AC 21 ms 728 KB
11_rand18.txt AC 22 ms 780 KB
11_rand19.txt AC 24 ms 784 KB
11_rand20.txt AC 42 ms 720 KB
11_rand21.txt AC 43 ms 720 KB
11_rand22.txt AC 66 ms 724 KB
11_rand23.txt AC 20 ms 760 KB
11_rand24.txt AC 19 ms 780 KB
21_rand00.txt AC 21 ms 776 KB
21_rand01.txt AC 21 ms 780 KB
21_rand02.txt AC 23 ms 788 KB
21_rand03.txt AC 21 ms 800 KB
21_rand04.txt AC 24 ms 744 KB
21_rand05.txt AC 20 ms 780 KB
21_rand06.txt AC 24 ms 784 KB
21_rand07.txt AC 20 ms 776 KB
21_rand08.txt AC 21 ms 768 KB
21_rand09.txt AC 22 ms 744 KB
21_rand10.txt AC 23 ms 816 KB
21_rand11.txt AC 24 ms 780 KB
21_rand12.txt AC 20 ms 780 KB
21_rand13.txt AC 21 ms 788 KB
21_rand14.txt AC 19 ms 776 KB
21_rand15.txt AC 30 ms 724 KB
21_rand16.txt AC 43 ms 732 KB
21_rand17.txt AC 24 ms 612 KB
21_rand18.txt AC 26 ms 732 KB
21_rand19.txt AC 23 ms 780 KB
21_rand20.txt AC 21 ms 820 KB
21_rand21.txt AC 21 ms 784 KB
21_rand22.txt AC 24 ms 720 KB
21_rand23.txt AC 19 ms 776 KB
21_rand24.txt AC 20 ms 744 KB
31_rand00.txt AC 23 ms 784 KB
31_rand01.txt AC 22 ms 776 KB
31_rand02.txt AC 19 ms 780 KB
31_rand03.txt AC 21 ms 760 KB
31_rand04.txt AC 21 ms 776 KB
31_rand05.txt AC 21 ms 776 KB
31_rand06.txt AC 19 ms 780 KB
31_rand07.txt AC 23 ms 812 KB
31_rand08.txt AC 19 ms 780 KB
31_rand09.txt AC 21 ms 784 KB
31_rand10.txt AC 21 ms 776 KB
31_rand11.txt AC 23 ms 776 KB
31_rand12.txt AC 25 ms 784 KB
31_rand13.txt AC 28 ms 728 KB
31_rand14.txt AC 22 ms 780 KB
31_rand15.txt AC 68 ms 732 KB
31_rand16.txt AC 105 ms 736 KB
31_rand17.txt AC 24 ms 716 KB
31_rand18.txt AC 22 ms 776 KB
31_rand19.txt AC 19 ms 780 KB
31_rand20.txt AC 22 ms 744 KB
31_rand21.txt AC 22 ms 780 KB
31_rand22.txt AC 21 ms 780 KB
31_rand23.txt AC 23 ms 812 KB
31_rand24.txt AC 18 ms 776 KB
41_rand00.txt AC 22 ms 788 KB
41_rand01.txt AC 22 ms 780 KB
41_rand02.txt AC 25 ms 972 KB
41_rand03.txt AC 27 ms 1012 KB
41_rand04.txt AC 29 ms 1208 KB
41_rand05.txt AC 25 ms 960 KB
41_rand06.txt AC 25 ms 908 KB
41_rand07.txt AC 33 ms 1204 KB
41_rand08.txt AC 20 ms 820 KB
41_rand09.txt AC 24 ms 944 KB
41_rand10.txt AC 20 ms 628 KB
41_rand11.txt AC 29 ms 1224 KB
41_rand12.txt AC 34 ms 1332 KB
41_rand13.txt AC 22 ms 784 KB
41_rand14.txt AC 26 ms 976 KB
41_rand15.txt AC 21 ms 784 KB
41_rand16.txt AC 22 ms 628 KB
41_rand17.txt AC 28 ms 1016 KB
41_rand18.txt AC 41 ms 1480 KB
41_rand19.txt AC 40 ms 1412 KB
41_rand20.txt AC 23 ms 884 KB
41_rand21.txt AC 21 ms 704 KB
41_rand22.txt AC 22 ms 904 KB
41_rand23.txt AC 33 ms 1340 KB
41_rand24.txt AC 29 ms 1172 KB