#include#include#include#includeusing namespace std;
#define max 210
int flow[max][max];
int pre[max],mark[max];
int n,m,f;
int q,z;
void maxliu()}}
if(!mark[n]) //如果mark[n]是0的話,那麼說明到不了n
break;
int minx=0x3f3f3f;
for(i=n;i!=1;i=pre[i])
for(i=n;i!=1;i=pre[i])
f+=minx; //找到一點,加一點
}}int main()
f=0;
maxliu();
printf("%d\n",f);
}return 0;
}
總結一下,最大流,學的時候不好理解,學會了真的很好用
下面是最大流的dinic演算法:
#include#include#includeusing namespace std;
#define max 300
#define inf 0x3f3f3f3f
int g[max][max];
int dist[max];
int n,m;
int bfs()}}
if(dist[n]>0) //大於0,說明可以到達
return 1;
else
return 0;
}int dfs(int x,int low)}}
return 0;
}int main()
int f=0,t;
while(bfs()) //判斷層次
}printf("%d\n",f);
}return 0;
}
最大流模板題 HDU 1532
hdu 1532 題意 給你m條邊 但向邊 n個點,n個點的編號為1到n,問從1到n的最大流是多少。最大流模板題,聽說有重邊,但是沒管重邊這個事也過了。dinic演算法 include define mem a,b memset a b,sizeof a define de coutvoid add...
hdu1532 最大流板子題
題目給出源點和漏點,還有一些邊,要求源與漏之間的最大流,我採用了edmonds karp演算法,該演算法是ford fulkerson演算法的一種實現,該演算法的關鍵技術是殘留網路和殘留網路上的反向邊,相當於給了搜尋策略乙個 反悔 的機會,演算法的實行過程是每次都尋找一條源點到漏點的增廣路徑,算出流...
hdu1532 網路流最大流問題
這是我的網路流第一題,用的是增廣路演算法即ek演算法,演算法思想 每次用bfs找一條最短的增廣路徑,然後沿著這條路徑修改流量值 實際修改的是殘量網路的邊權 順帶修改反圖的殘餘網路的邊權。當沒有增廣路時,演算法停止,此時的流就是最大流。還有這裡之所以要建反圖是因為,bfs找最短的增廣路的時候是隨機找的...