poj 2195 最小費用最大流

2021-06-07 23:31:47 字數 922 閱讀 8012

題意:

給出一張圖,m代表人,h代表house,問所以的人走到house裡的最小花費(每步花費1)

5 5

hh..m

.....

.....

.....

mm..h

簡單題目直接** :#include#include#include#include#includeusing namespace std;

const int m=102;

const int maxn=10002;

const int inf=0x3f3f;

char map[m][m];

int pre[maxn]; // pre[v] = k:在增廣路上,到達點v的邊的編號為k

int dis[maxn]; // dis[u] = d:從起點s到點u的路徑長為d

int vis[maxn]; // inq[u]:點u是否在佇列中

int path[maxn];

int head[maxn];

int dx[5]= ;

int dy[5]= ;

int n,m,ne,sink,tot,ans;

struct node

edge[m*m*10];

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

int inmap(int x,int y)}}

vis[u] =0;

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

return false;

return true;

}void end(int s,int t)

for(u = t; u != 0; u=pre[u])

}int main()

}for(i=0; i

poj 2195 最小費用最大流

題意 n個人和m個房子,每個房子中要安排乙個人,每個人移動一步費用為1,所有人安排房子後需要的金錢的最小值。曼哈頓距離 例如在平面上,座標 x1,y1 的i點與座標 x2,y2 的j點的曼哈頓距離為 d i,j x1 x2 y1 y2 建圖 網路流,建乙個超源 0,超匯 e 1 超源 0 到 所有人...

POJ 2195 最小費用最大流

題目大意 給定一張網格圖,每個人需要回到乙個房子裡並且乙個房子只能容納乙個人,問所有人加起來的最短路徑是多少 題目解析 看到匹配,肯定是網路流了,有個坑點,題目說只要進入乙個房子就不能走了,照道理有的房子是走不到的應該要bfs,然而並沒有,構圖簡單不多說 ac include include inc...

poj 2195 最小費用最大流

題目大意 乙個nxm的地圖,地圖上的橫縱交錯成nxm個交叉點,其中有k個交叉點為房間,k個交叉點為k個小人的初始位置。小人可以在地圖上沿著水平或垂直方向行走,每走一步的代價為1。求這k個小人分別到達k個不同的房間,所花費的總代價的最小值。題目分析 ps 這種有限制條件 比如容量有限制 的問題可以考慮...