• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 18,  comments - 5,  trackbacks - 0
            一、題目描述

            Description

            Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drainage ditches so that Bessie's clover patch is never covered in water. Instead, the water is drained to a nearby stream. Being an ace engineer, Farmer John has also installed regulators at the beginning of each ditch, so he can control at what rate water flows into that ditch.
            Farmer John knows not only how many gallons of water each ditch can transport per minute but also the exact layout of the ditches, which feed out of the pond and into each other and stream in a potentially complex network.
            Given all this information, determine the maximum rate at which water can be transported out of the pond and into the stream. For any given ditch, water flows in only one direction, but there might be a way that water can flow in a circle.

            Input

            The input includes several cases. For each case, the first line contains two space-separated integers, N (0 <= N <= 200) and M (2 <= M <= 200). N is the number of ditches that Farmer John has dug. M is the number of intersections points for those ditches. Intersection 1 is the pond. Intersection point M is the stream. Each of the following N lines contains three integers, Si, Ei, and Ci. Si and Ei (1 <= Si, Ei <= M) designate the intersections between which this ditch flows. Water will flow through this ditch from Si to Ei. Ci (0 <= Ci <= 10,000,000) is the maximum rate at which water will flow through the ditch.

            Output

            For each case, output a single integer, the maximum rate at which water may emptied from the pond.

            Sample Input

            5 4
            1 2 40
            1 4 20
            2 4 20
            2 3 30
            3 4 10
            

            Sample Output

            50

            二、分析
               其實就是以點1為s,以點m為t,求最大流,但是要注意輸入的路徑可以重復(見代碼30行),使用Edmonds-Karp算法,具體算法:最大流問題
            三、代碼
             1#include<iostream>
             2#include<queue>
             3using namespace std;
             4#define MAXM 201
             5int m, n;
             6int si, ei, ci;
             7int c[MAXM][MAXM];
             8int f[MAXM][MAXM];
             9int cf[MAXM][MAXM];
            10bool visit[MAXM];
            11int p[MAXM];
            12struct node
            13{
            14    int v, cf;
            15    void set(int vv, int ccf)
            16    {
            17        v = vv; cf = ccf;
            18    }

            19}
            ;
            20int main()
            21{
            22    while(scanf("%d%d"&n, &m) != EOF)
            23    {
            24        memset(c, 0sizeof(c));
            25        memset(f, 0sizeof(f));
            26        memset(cf, 0sizeof(cf));
            27        while(n--)
            28        {
            29            scanf("%d%d%d"&si, &ei, &ci);
            30            c[si][ei] += ci;
            31            cf[si][ei] = c[si][ei];
            32        }

            33        bool flag = true//用于表示是否找到增廣路
            34        while(flag)
            35        {
            36            flag = false;
            37            memset(visit, 0sizeof(visit));
            38            queue<node> q;
            39            node temp;
            40            temp.set(1, INT_MAX);
            41            p[1= 0;
            42            q.push(temp); visit[1= true;
            43            while(!q.empty()) //廣度優先搜索
            44            {
            45                node temp = q.front(); q.pop();
            46                for(int i=1; i<=m; i++)
            47                {
            48                    if(temp.v == i || visit[i] || cf[temp.v][i] == 0)
            49                        continue;
            50                    node newNode; 
            51                    newNode.set(i, min(temp.cf, cf[temp.v][i]));
            52                    p[i] = temp.v;
            53                    q.push(newNode);
            54                    visit[i] = true;
            55                    if(i == m)
            56                    {
            57                        flag = true//找到增廣路
            58                        break;
            59                    }

            60                }

            61                if(flag)
            62                    break;
            63            }

            64            if(flag)
            65            {
            66                int mincf = q.back().cf;
            67                int v1 = p[m], v2 = m;
            68                while(v1 != 0)
            69                {
            70                    f[v1][v2] += mincf; //修改流
            71                    f[v2][v1] = -f[v1][v2];
            72                    cf[v1][v2] = c[v1][v2] - f[v1][v2]; //修改殘留容量
            73                    cf[v2][v1] = c[v2][v1] - f[v2][v1];
            74                    v2 = v1;
            75                    v1 = p[v1];
            76                }

            77            }

            78        }

            79        int res = 0;
            80        for(int i=2; i<=m; i++//計算最大流
            81            res += f[1][i];
            82        printf("%d\n", res);
            83    }

            84}
            posted on 2009-06-23 19:38 Icyflame 閱讀(2539) 評論(2)  編輯 收藏 引用 所屬分類: 解題報告
            欧美一级久久久久久久大| 99国产精品久久久久久久成人热| 亚洲国产精品久久| 久久福利青草精品资源站免费| AV无码久久久久不卡网站下载 | 久久亚洲欧洲国产综合| 久久精品国产亚洲7777| 亚洲色大成网站www久久九| 久久久久国产一级毛片高清版| 欧美粉嫩小泬久久久久久久 | 青青青国产成人久久111网站| 久久久精品视频免费观看| 无码人妻久久一区二区三区免费| 91久久精品电影| 亚洲色大成网站www久久九 | 波多野结衣久久精品| 久久99热精品| 久久夜色精品国产噜噜麻豆 | 亚洲国产香蕉人人爽成AV片久久| 久久综合给合久久狠狠狠97色| 久久久国产精品| 国产精品久久久久久搜索| 久久国产免费直播| 伊人热热久久原色播放www| 久久国产成人精品麻豆| 久久精品九九亚洲精品| 亚洲精品无码专区久久久| 日本精品久久久久影院日本| 99久久亚洲综合精品网站| 一本色道久久88精品综合 | 久久亚洲色一区二区三区| 天天爽天天爽天天片a久久网| 久久精品中文无码资源站| 一本色综合网久久| 久久精品国产AV一区二区三区| 欧美日韩成人精品久久久免费看| 国产真实乱对白精彩久久| 精品国产乱码久久久久久浪潮| 久久香蕉一级毛片| 国内精品久久久久久久久| 18岁日韩内射颜射午夜久久成人 |