zoukankan      html  css  js  c++  java
  • poj 3308 Paratroopers

    http://poj.org/problem?id=3308

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <cmath>
     6 #define maxn 10000
     7 using namespace std;
     8 
     9 const int inf=1<<30;
    10 int n,m,l,x,y;
    11 double c,f;
    12 double cap[200][200],flow[200][200];
    13 int p[200];
    14 double a[200];
    15 
    16 void EK(int s)
    17 {
    18    queue<int>q;
    19    memset(flow,0,sizeof(flow));
    20    f=0;
    21    for(; ;)
    22    {
    23        memset(a,0,sizeof(a));
    24        memset(p,-1,sizeof(p));
    25        a[s]=inf;
    26        q.push(s);
    27        while(!q.empty())
    28        {
    29            int u=q.front();
    30            q.pop();
    31            for(int v=0; v<=m+n+1; v++)
    32            {
    33                if(!a[v]&&cap[u][v]>flow[u][v])
    34                {
    35                    p[v]=u;
    36                    q.push(v);
    37                    a[v]=min(a[u],cap[u][v]-flow[u][v]);
    38                }
    39            }
    40        }
    41        if(a[m+n+1]==0) break;
    42        for(int u=m+n+1; u!=0; u=p[u])
    43        {
    44            flow[p[u]][u]+=a[m+n+1];
    45            flow[u][p[u]]-=a[m+n+1];
    46        }
    47        f+=a[m+n+1];
    48    }
    49 }
    50 
    51 int main()
    52 {
    53     int T;
    54     scanf("%d",&T);
    55     while(T--)
    56     {
    57         memset(cap,0,sizeof(cap));
    58         scanf("%d%d%d",&m,&n,&l);
    59         for(int i=1;i<=m; i++)
    60         {
    61             scanf("%lf",&c);
    62             cap[0][i]=log(c);
    63         }
    64         for(int i=m+1; i<=m+n; i++)
    65         {
    66             scanf("%lf",&c);
    67             cap[i][m+n+1]=log(c);
    68         }
    69         for(int i=0; i<l; i++)
    70         {
    71             scanf("%d%d",&x,&y);
    72             cap[x][m+y]=inf;
    73         }
    74         f=0;
    75         EK(0);
    76         printf("%.4f
    ",exp(f));
    77     }
    78     return 0;
    79 }
    View Code
  • 相关阅读:
    leetcode刷题
    剑指offer题解
    哈夫曼树和哈夫曼编码
    HashMap的扩容机制---resize()
    缓存穿透,缓存击穿,缓存雪崩解决方案分析
    字符串的排列组合问题
    乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
    HTTP相关
    零散知识点
    Java大数相加
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3554227.html
Copyright © 2011-2022 走看看