POJ2195 Going home 最小費用流

2021-07-30 16:43:37 字數 754 閱讀 3224

建立源點s,匯點t,s與每個人之間建邊,費用為0,容量為1,每個房子與t建邊,費用為0容量為1,每個人與每個房子之間建邊,費用為人到達房子的距離,容量為1,

則該題轉化為求最小費用流問題。

#include#include#include#include#define max 1<<31-1

#define min(x,y)(xg[210];

int dis[210],pree[210],prev[210];

int dist(point p1,point p2)

void add_edge(int from,int to,int cap,int cost)

); g[to].push_back((edge));

}int min_cost_flow(int s,int t,int f)}}

} if(dis[t]==max)

break;

int d=max;

for(u=t;u!=s;u=prev[u])

res+=dis[t];

f-=d;

for(u=t;u!=s;u=prev[u])

}return res;

}int main()

{ int m,n,i,j,num1,num2,s,t;

while(scanf("%d%d",&m,&n)&&(m||n))

{ num1=0;

num2=0;

gets(str[0]);

for(i=0;i

poj 2195(最小費用流)

題意 給你乙個n m的地圖,h代表這個點有乙個房子,m代表這個點是乙個人,每次h走一步就花費一,問最小花費使得每個人能進入乙個房間 建立乙個源點和匯點,每個人和源點相連,每個房子和匯點相連,每個人和每個房子相連,花費為曼哈段距離 include include include include inc...

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的地圖,由幾個h 房子 和m 人 求每個人都走到乙個房子的最少需要的總步數。n,m 100 h m 兩種方法,看心情!1.最小費用最大流 算出每個人到每個房子的步數 s和每個人連邊,容量1,費用0 每個人和每個房子連邊,容量inf,費用為步數 每個房子和t連邊,容量1,費用0 i...