農場之旅 最小費用最大流

2021-08-19 09:23:48 字數 1117 閱讀 9597

題意:

fj帶朋友參觀自己的農場,從自己的房子出發到農場,再從農場返回自己的房子,要求去回不走同一條路。房子的點數為1,農場為n,在1到n之間有很多點,給出n個頂點,m條邊,然後m行每行有三個數,a,b,c代表a到c的路徑長度為c,並且a到b是無向邊,現在要求從1點到n點在從n點返回1點的最短路

思路:因為每條邊只能經過一次,可以設定這條邊的容量是1,費用就是長度。然後增加乙個源點s和乙個匯點t,從s到1結點連一條容量是2費用是0的弧,對於匯點t也是一樣,這樣就構建好了乙個最小費用最大流的圖了。但是需要注意的是,題目給出的是無向圖,所以建邊的時候要正反兩個方向各鍵一次。

#include

#include

#include

#include

#include

using

namespace

std;

int n,m;

const

int maxn=2000+100;

const

int maxm=20000+100;

const

int inf=0x3f3f3f3f;

int head[maxm],cnt;

struct edge

edge[maxm*5+100];

int dis[maxn],pre[maxm],p[maxn];

int vis[maxn];

void add_edge(int u,int v,int c,int cost)

int spfa(int s,int t)

}}

}if(pre[t]==-1)

return

0; return1;}

int min_cost_flow(int s,int t)

u=t;

for(int i=pre[u];i!=-1;i=pre[edge[i].u])

ans_flow+=minn;

if(ans_flow==2)

}return ans_cost;

}int main ()

printf("%d\n",min_cost_flow(0,n+1));

}

最小費用最大流

網 絡流的基本問題為 設乙個有向賦權圖g v,e v 其中有兩個特殊的節點s和s s稱為發點,s 稱為收點。圖中各 邊的方向和權數表示允許的流向和最大可能的流量 容量 問在這個網路圖中從發點流出到收點匯集,最大可通過的實際流量為多少?流向的分布情況為怎樣?設有乙個網路圖g v,e v e中的每條邊 ...

最小費用最大流

const int maxn 250 const int maxm 62272 const int inf 0x4ffffff int n,m struct edge edge maxm int head maxn cnt void init void addedge int u,int v,int...

最小費用最大流

看了最小費用最大流的問題,感覺好難啊,想不到,關鍵就是想不到,知道模板什麼用,只是能a題僅此而已,要想學深真的不是件容易的事情啊。為此我總結了以下幾點供複習知識點或者是講課時用 網路流的費用 在實際應用中,與網路流有關的問題,不僅涉及流量,而且還有費用的因素。網路的每一條邊 v,w 除了給定容量ca...