• <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()) //廣度優(yōu)先搜索
            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 閱讀(2545) 評論(2)  編輯 收藏 引用 所屬分類: 解題報告
            色综合久久综合中文综合网| 91亚洲国产成人久久精品网址| 亚洲欧洲精品成人久久奇米网| 亚洲国产小视频精品久久久三级| 亚洲国产日韩综合久久精品| 久久99国产综合精品| 无码人妻少妇久久中文字幕| 久久久久久曰本AV免费免费| 国产精品青草久久久久婷婷| 久久久久亚洲爆乳少妇无| 久久综合久久自在自线精品自| 久久精品人人做人人爽电影| 国产欧美久久久精品影院| 91精品国产91久久综合| 伊人情人综合成人久久网小说 | 精品综合久久久久久97| 青青热久久综合网伊人| 亚洲国产另类久久久精品小说| 久久99精品久久久久久秒播| 久久久久无码精品国产| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产只有精品2020| 久久永久免费人妻精品下载| 欧美成a人片免费看久久| 国产成人久久激情91| 亚洲AV无码久久精品成人| 2021国产精品午夜久久| 欧美麻豆久久久久久中文| 久久免费国产精品一区二区| 2022年国产精品久久久久 | 午夜精品久久久久久久久| 一本一道久久a久久精品综合| 国产福利电影一区二区三区久久久久成人精品综合 | 久久夜色精品国产www| 国产99久久久久久免费看| 93精91精品国产综合久久香蕉| 久久66热人妻偷产精品9| 99麻豆久久久国产精品免费| 国产精品久久久久久| 好久久免费视频高清| 国产69精品久久久久99|