• <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 閱讀(2544) 評論(2)  編輯 收藏 引用 所屬分類: 解題報告
            国产午夜久久影院| 久久久久这里只有精品 | 久久99毛片免费观看不卡| 久久精品夜夜夜夜夜久久| 国内精品久久国产大陆| 久久精品免费观看| 久久这里只有精品视频99| 久久久久久精品无码人妻| 日韩精品久久久肉伦网站| 精品熟女少妇av免费久久| 国产香蕉97碰碰久久人人| 国产精品久久久香蕉| 国产成人久久激情91| 久久久精品国产亚洲成人满18免费网站| 精品久久久久久久国产潘金莲| 99久久免费国产精品特黄| 97久久香蕉国产线看观看| 久久精品亚洲乱码伦伦中文 | 亚洲第一极品精品无码久久| 国产精品免费福利久久| 久久99久久成人免费播放| 久久人人爽人人爽人人片AV东京热 | 一97日本道伊人久久综合影院| 浪潮AV色综合久久天堂| 久久伊人中文无码| 久久精品国产精品青草| 亚洲精品乱码久久久久久久久久久久 | 久久人人爽人人爽人人片AV高清| 久久青青草原综合伊人| 久久久久亚洲av无码专区| 久久久艹| 久久乐国产精品亚洲综合| 久久免费线看线看| 久久久噜噜噜www成人网| 色综合久久无码中文字幕| 久久无码中文字幕东京热 | 久久这里只精品99re66| 天天综合久久一二三区| 久久婷婷五月综合成人D啪| 久久久久亚洲精品男人的天堂 | 久久久久久国产a免费观看不卡|