<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Hdu Drainage Ditches

      View Code
        1 /*
        2 http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1001&ojid=0&cid=4456&hide=0
        3 
        4 hdu  Drainage Ditches 
        5 */
        6 #include <iostream>
        7 #include<cstdio>
        8 #include<cstring>
        9 #include<vector>
       10 #include<queue>
       11 #include<algorithm>
       12 using namespace std;
       13 #define min(a,b) ((a)<(b))?(a):(b)
       14 #define max(a,b) ((a)>(b))?(a):(b)
       15 #define MAXN 200
       16 #define MAXM 500
       17 #define INF 0x3f3f3f3f
       18 //鏈式前向星
       19 struct enode
       20 {
       21     int t;
       22     int w;                //權值
       23     int c;                //流量
       24 //  int cost;
       25 //    int pre;            //前向指針
       26     int next;
       27 };
       28 struct lstar
       29 {
       30     struct enode e[MAXM];
       31     int box[MAXN],ecnt;
       32     //int etail[MAXN];        //尾部
       33     void init()
       34     {
       35         ecnt=0;
       36         memset(box,-1,sizeof(box));
       37     //    memset(etail,-1,sizeof(etail));        //初始化尾部
       38     }
       39     void ins(int f,int t,int c)                   //簡單
       40     {
       41         e[ecnt].t=t;
       42     //    e[ecnt].pre=-1;
       43         e[ecnt].next=box[f];
       44         e[ecnt].c=c;
       45         box[f]=ecnt++;
       46     }
       47     void addedge(int f,int t,int c)            //流量重載
       48     {
       49         e[ecnt].next=box[f];
       50         e[ecnt].t=t;
       51         e[ecnt].c=c;
       52         box[f]=ecnt++;
       53         e[ecnt].next=box[t];
       54         e[ecnt].t=f;
       55         e[ecnt].c=0;
       56         box[t]=ecnt++;
       57     }
       58     void ins1(int f,int t,int w)             //權值重載
       59     {
       60         e[ecnt].t=t;
       61         e[ecnt].w=w;
       62         e[ecnt].next=box[f];
       63         box[f]=ecnt++;
       64     }
       65 
       66 };
       67 
       68 int sap(int s,int t,lstar G,int N)//最大流問題
       69 {
       70     int gap[MAXN],lvl[MAXN],cur[MAXN],pre[MAXN];
       71     int curflow,ans=0,u,tmp,neck,i;
       72     memset(lvl,0,sizeof(lvl));
       73     memset(gap,0,sizeof(gap));
       74     memset(pre,-1,sizeof(pre));
       75     for(i=0;i<N;i++)
       76         cur[i]=G.box[i];
       77     gap[0]=N;
       78     u=s;
       79     while(lvl[s]<N)
       80     {
       81         if(u==t)
       82         {
       83             curflow=INF;
       84             for(i=s;i!=t;i=G.e[cur[i]].t)
       85             {
       86                 if(curflow>G.e[cur[i]].c)
       87                 {
       88                     neck=i;
       89                     curflow=G.e[cur[i]].c;
       90                 }
       91             }
       92             for(i=s;i!=t;i=G.e[cur[i]].t)
       93             {
       94                 tmp=cur[i];
       95                 G.e[tmp].c-=curflow;
       96                 G.e[tmp^1].c+=curflow;
       97             }
       98             ans+=curflow;
       99             u=neck;
      100         }
      101         for(i=cur[u];i!=-1;i=G.e[i].next)
      102             if(G.e[i].c && lvl[u]==lvl[G.e[i].t]+1)
      103                 break;
      104         if(i!=-1)
      105         {
      106             cur[u]=i;
      107             pre[G.e[i].t]=u;
      108             u=G.e[i].t;
      109         }
      110         else
      111         {
      112             if(--gap[lvl[u]]==0)
      113                 break;
      114              cur[u]=G.box[u];
      115             for(tmp=N,i=G.box[u];i!=-1;i=G.e[i].next)
      116                 if(G.e[i].c)
      117                     tmp=min(tmp,lvl[G.e[i].t]);
      118             lvl[u]=tmp+1;
      119             gap[lvl[u]]++;
      120             if(u!=s)
      121                 u=pre[u];
      122         }
      123     }
      124     return ans;
      125 }
      126 int main()
      127 {
      128       int m,n;
      129       lstar  s;
      130         while(cin>>n>>m)
      131         {
      132             int a,b,cost;
      133            // memset(map,0,sizeof(map));
      134            s.init();
      135            for(int i=0;i<n;i++)
      136             {
      137                cin>>a>>b>>cost;
      138                s.addedge(a-1,b-1,cost);
      139             }//參數含義:源點 匯點 網絡結點數量
      140             //printf("####\n");
      141           /*  for(int i=1;i<=n;i++)
      142             {
      143                 for(int k=s.box[i];k!=-1;k=s.e[k].next)
      144                 cout<<i<< " " <<s.e[k].t<< " " <<s.e[k].c<<endl;
      145             }//*/
      146             cout<<sap(0,m-1,s,m)<<endl;//最大流問題
      147         }
      148     return 0;
      149 }

      圖論 基礎 求最大流

      建圖  鏈式前向星  注意構建邊結構 存容量 C

      SAP 求最大流

      posted on 2013-04-18 22:57  ACM_Someone like you  閱讀(222)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产成a人亚洲精v品无码性色| 国产在线98福利播放视频| 国产三级精品三级在线看| 性欧美三级在线观看| 人禽无码视频在线观看| 国产一二三五区不在卡| 无码国产偷倩在线播放| 国内偷自第一区二区三区| 国产偷窥厕所一区二区| 亚洲国产欧美一区二区好看电影| 国产精品蜜臀av在线一区| 拍摄av现场失控高潮数次| 精品偷拍一区二区三区在| 吃奶还摸下面动态图gif| 国产在线乱子伦一区二区| 亚洲第一人伊伊人色综合| 日本丰满护士bbw| 免费看婬乱a欧美大片| 五月丁香六月综合缴清无码| 在线高清免费不卡全码| 精品九九热在线免费视频| 中文国产成人精品久久不卡| 在线成人国产天堂精品av| 极品少妇无套内射视频| 中山市| 亚洲禁精品一区二区三区| 国产69精品久久久久99尤物| 榆社县| 国产午夜福利精品视频| 肉大捧一进一出免费视频| 亚洲国产色婷婷久久99精品91| 一区二区亚洲人妻精品| 国产成人无码免费视频在线| 开心激情站一区二区三区| 久久婷婷综合色丁香五月| mm1313亚洲国产精品| 中文字幕日韩有码一区| 精品久久久久中文字幕日本| 全免费A级毛片免费看无码| 99久久国产宗和精品1上映| 在线a亚洲v天堂网2018|