題意:給你乙個n*m的地圖,h代表這個點有乙個房子,m代表這個點是乙個人,每次h走一步就花費一,問最小花費使得每個人能進入乙個房間
**:建立乙個源點和匯點,每個人和源點相連,每個房子和匯點相連,每個人和每個房子相連,花費為曼哈段距離
**:
#include#include#include#include#includeusing namespace std;const int maxn=1005000;
const int inf=0x3f3f3f3f;
struct node
h[50050],man[50050];
int cntm,cnth;
struct edge
edge[maxn];
int head[50050],dist[50050],pre[50050],path[50050];
int start,end;
char s[1050][1050];
int cnt,x,y,w,n,m,tx,ty;
void add(int u,int v,int w,int cost)
if(s[i][j]=='h')
}for(int i=1;i<=cnth;i++)
for(int i=1;i<=cntm;i++)
for(int i=1;i<=cntm;i++)
}int ans=mincost(start,end);
cout<}
}
poj 2195 最小費用最大流
題意 給出一張圖,m代表人,h代表house,問所以的人走到house裡的最小花費 每步花費1 5 5 hh.m mm.h簡單題目直接 include include include include includeusing namespace std const int m 102 const 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...