日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络流之 最短增广路算法模板(SAP)

發布時間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络流之 最短增广路算法模板(SAP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據輸入格式:首先輸入頂點個數n和弧數m,然后輸入每條弧的數據。規定源點為頂點0,匯點為頂點n-1.每條弧的數據格式為:u,v,w,分別表示這條弧的起點,終點,容量。頂點序號從0開始。

代碼:

?

1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include <string> 7 #include <map> 8 #include <stack> 9 #include <vector> 10 #include <set> 11 #include <queue> 12 #pragma comment (linker,"/STACK:102400000,102400000") 13 #define maxn 1005 14 #define MAXN 2005 15 #define mod 1000000009 16 #define INF 0x3f3f3f3f 17 #define pi acos(-1.0) 18 #define eps 1e-6 19 typedef long long ll; 20 using namespace std; 21 22 int d[maxn]; //標號 23 int mp[maxn][maxn]; //殘留網絡,初始為原圖 24 int num[maxn]; //num[i]表示標號為i的頂點數有多少 25 int pre[maxn]; //記錄前驅 26 int n,m,s,t; //n個頂點,m條邊,源點s,匯點t 27 28 void init() //bfs計算標號,匯點t的標號為零 29 { 30 int k; 31 queue<int>Q; 32 memset(d,INF,sizeof(d)); //初始化d數組為無窮大 33 memset(num,0,sizeof(num)); //初始化num數組num 34 Q.push(t); //匯點t入隊列 35 d[t]=0; //匯點標號為零 36 num[0]=1; //標號為0的頂點數為1 37 while (!Q.empty()) 38 { 39 k=Q.front(); 40 Q.pop(); 41 for (int i=0;i<n;i++) 42 { 43 if (d[i]>=n&&mp[i][k]>0) 44 { 45 d[i]=d[k]+1; 46 Q.push(i); 47 num[d[i]]++; 48 } 49 } 50 } 51 } 52 53 int findAlowArc(int i) //從i出發尋找允許弧 54 { 55 int j; 56 for (j=0;j<n;j++) 57 if (mp[i][j]>0&&d[i]==d[j]+1) 58 return j; 59 return -1; 60 } 61 62 int reLable(int i) //重新標號 63 { 64 int mm=INF; 65 for (int j=0;j<n;j++) 66 if (mp[i][j]>0) 67 mm=min(mm,d[j]+1); 68 return mm==INF?m:mm; 69 } 70 71 int maxFlow(int s,int t) //求從源點s出發的最大流 72 { 73 int flow=0,i=s,j; 74 int delta; //增量 75 memset(pre,-1,sizeof(pre)); 76 while (d[s]<n) 77 { 78 j=findAlowArc(i); 79 if (j>=0) 80 { 81 pre[j]=i; 82 i=j; 83 if (i==t) //更新殘留網絡 84 { 85 delta=INF; 86 for (i=t;i!=s;i=pre[i]) 87 delta=min(delta,mp[pre[i]][i]); 88 for (i=t;i!=s;i=pre[i]) 89 mp[pre[i]][i]-=delta,mp[i][pre[i]]+=delta; 90 flow+=delta; 91 } 92 } 93 else 94 { 95 int x=reLable(i); //重新標號 96 num[x]++; 97 num[d[i]]--; 98 if (num[d[i]]==0) //間隙優化 99 return flow; 100 d[i]=x; 101 if (i!=s) 102 i=pre[i]; 103 } 104 } 105 return flow; 106 } 107 108 int main() 109 { 110 int u,v,c; //弧的起點,終點,容量 111 while (scanf("%d%d",&n,&m)!=EOF) //讀入頂點個數n和弧數m 112 { 113 memset(mp,0,sizeof(mp)); 114 for (int i=0;i<m;i++) 115 { 116 scanf("%d%d%d",&u,&v,&c); 117 mp[u][v]=c; 118 } 119 s=0,t=n-1; 120 init(); 121 printf("%d\n",maxFlow(0,n-1)); 122 } 123 return 0; 124 } 125 /* 126 6 10 127 0 1 8 128 0 2 4 129 1 3 2 130 1 4 2 131 2 1 4 132 2 3 1 133 2 4 4 134 3 4 6 135 3 5 9 136 4 5 7 137 */ View Code

?

轉載于:https://www.cnblogs.com/i8888/p/4048928.html

總結

以上是生活随笔為你收集整理的网络流之 最短增广路算法模板(SAP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产区视频在线观看 | 久久久久国产精 | 久中文字幕| 久久99精品国产麻豆婷婷洗澡 | 国产乱码精品一区二三区蜜臂 | 禁止18在线观看 | 国产三级直播 | 男女日批| 自拍偷拍18p | 蜜臀av夜夜澡人人爽人人 | 色天天 | 淫语对白| 九九在线视频 | 欧美三级免费观看 | 国产精品麻豆一区二区三区 | 二区三区在线视频 | 在办公室被c到呻吟的动态图 | 少妇av | 激情小说在线 | 欧美xxxx黑人xyx性爽 | av成人在线网站 | 久久er99热精品一区二区介绍 | 黄色网页在线看 | 天天爱天天爽 | 欧美一二三区 | 亚洲av久久久噜噜噜熟女软件 | 久久精品第一页 | 伊人精品视频在线观看 | 色成人综合网 | 国产又粗又猛又色又 | 久久久久国产精品区片区无码 | 在线免费视频一区 | 日韩福利视频网 | 在线国产一区 | 毛片视频网站在线观看 | 国产区在线观看视频 | 国产情侣av在线 | 老太脱裤让老头玩ⅹxxxx | 人人精品久久 | 人人操在线播放 | 在线国产日韩 | 中文字幕久久精品 | 黄色茄子视频 | 欧美日韩午夜 | 国产婷婷色一区二区三区 | 亚洲中文字幕97久久精品少妇 | 国产精品久久久久久久av | 玉势 (1v1 高h)| 成人免费看片载 | 天堂俺去俺来也www 欧美大片在线播放 | 懂色视频在线观看 | 精品小视频在线观看 | 国产精品人妻一区二区三区 | 日韩在线一二 | 黄色资源在线播放 | 巨乳美女在线 | 一区二区三区www污污污网站 | 大陆熟妇丰满多毛xxxⅹ | 久久久综合av | 亚洲国产日韩av | 国产精品久久久久久亚洲 | 波多野结衣一区 | 青娱乐国产盛宴 | 免费一级淫片aaa片毛片a级 | 亚洲精品高潮 | 欧美天堂视频 | 欧美处女| 97se视频 | 成人xxx| av不卡在线免费观看 | 久久天天躁狠狠躁夜夜躁2014 | 国产四区 | 国产+日韩+欧美 | 精品伦理一区二区 | 免费激情小视频 | 国产午夜电影 | 国产视频不卡一区 | 色妞视频 | 国产欧美另类 | 国产精品99久 | 波多野结衣喷潮 | 日本中文在线 | 中文精品久久 | 日日操日日 | 麻豆国产在线视频 | 欧美人妻精品一区二区三区 | 国产激情精品一区二区三区 | 欧美精品福利 | 丁香婷婷在线观看 | 国产原创在线观看 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 国产香蕉视频 | 亚洲制服丝袜在线播放 | 亚洲精品麻豆 | 国产欧美日韩成人 | 国产99999| 国产一级淫片a视频免费观看 | 男女激情免费网站 | 欧美日韩国产在线播放 |