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

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

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

      Hdu Flow Problem

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

      http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1002&ojid=0&cid=4456&hide=0

      直接求最大流問題

      posted on 2013-04-18 23:03  ACM_Someone like you  閱讀(256)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲综合精品香蕉久久网| 男人狂桶女人出白浆免费视频| 97人妻精品一区二区三区| 国产成人精品亚洲资源| 亚洲婷婷六月的婷婷| 精品乱码一区二区三四五区| 亚洲色在线v中文字幕| 亚洲精品国产第一区二区| 精品国产午夜福利在线观看| 日本亚洲一区二区精品| 日韩av一区二区三区不卡| 亚洲欧美偷拍另类A∨| 会理县| 中文字幕色av一区二区三区| 91久久亚洲综合精品成人| 另类 专区 欧美 制服| 中国熟妇毛多多裸交视频| 午夜大尺度福利视频一区| 少女韩国在线观看完整版免费| 国产午夜福利免费入口| 中文字日产幕码三区国产| 亚洲av影院一区二区三区| 亚洲午夜精品国产电影在线观看| 亚洲国产精品日韩专区av| 中文字幕日韩精品亚洲一区 | 国产精品三级中文字幕| 国产高清一区二区三区视频| 亚洲第一天堂无码专区| 亚洲精品一区二区五月天| 亚洲国产午夜精品福利| 亚洲av永久无码天堂影院| 日韩黄色av一区二区三区| AV无码不卡一区二区三区| 亚洲国产成人无码av在线播放| 欧洲中文字幕一区二区| 熟女少妇精品一区二区| 国产成人精品视频国产| 亚洲第一极品精品无码久久| 免费观看性行为视频的网站| 人妻少妇精品视频三区二区| 亚洲蜜臀av乱码久久|