uva10806 (最小費用最大流)

2021-07-10 12:44:15 字數 1188 閱讀 4017

題意:從1到n 再從n到1 不經過重複的邊 ,(如果是點就是旅行商問題了),問最短路

思路:

最小費用最大流

建立乙個超級源 它的容量為2,到第乙個點的費用為0

然後每個連線的點的容量為1

只要找出兩條最小費用的路

那麼就可以了。

**:

#include 

using

namespace

std;

#include

#include

#include

#include

const

int maxn = 200;

const

int maxm = 200 *200;

const

int inf = 0x3f3f3f3f;

struct node

}e[maxm];

int head[maxn];

int pre[maxn],dis[maxn];

int vis[maxn];

int n,tol;

int nn,mm;

void addedge(int u,int v,int cap,int cost)

bool spfa(int s,int t)

dis[s] = 0;

vis[s] = 1;

q.push(s);

while(!q.empty()) }}

}if(pre[t] == -1) // 如果不存在就return false

return

false;

return

true;

}int mincostmaxflow(int s,int t,int &cost) //找出整條路中最小的流量

for(int i = pre[t]; i != -1; i = pre[e[i^1].v])

flow += min;

}return flow;//如果存在兩條的話 那麼flow == 2

}void solve()

int main()

solve();

// for(int i = 0; i // cout << e[i ^ 1].v <}

return

0;}

uva10746 (最小費用最大流)

題目大意 有n所銀行,有m輛巡警車,給出巡警車到各個銀行所需要的距離,問平均最小的距離是多少。思路 最小費用最大流的問題。構造乙個超級源點,然後連線邊到各輛巡警車,巡警車與各所銀行相連線,容量為1,費用為k。先求出費用最小的路,然後在費用最小的路上增流 include using namespace...

uva 10594(最小費用最大流)

題意 在乙個無向網路中,告訴你邊的容量與費用。現在需要傳送d個資料問你你否能傳送成功,若成功則最小費用是多少。思路 顯然是最小費用最大流問題,這道題的見圖比較簡單。只需要新增乙個原點費用為d指向1就行了。接下來的事情就是套模版了。如下 1 include 2 include 3 include 4 ...

最小費用最大流

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