匈牙利演算法模板 KM演算法模板

2021-06-29 10:55:11 字數 1367 閱讀 5183

匈牙利演算法模板   時間複雜度為o(ve)   v為二分圖左邊的頂點數,e為二分圖中邊的數目

#include#includeconst int maxn=1010;

const int maxm=20010;

const int max=10001;

const int inf=1000000000;

int line[maxn];

int n,m,cnt,slack;

int head[maxn];

bool used[maxn];//y集合中點的狀態

struct edge

edge[maxm];

void addedge(int u,int v,int w)

bool find(int u)//尋找增廣路

} }return 0;

}int hungary()//返回匹配數

return all;

}

km演算法模板

#include#includeconst int maxn=1010;

const int maxm=20010;

const int max=10001;

const int inf=1000000000;

int lx[maxn],ly[maxn];//頂標

bool visx[maxn],visy[maxn];//開兩個陣列是需要記錄x集合和y集合在相等子圖中的狀態。

int line[maxn];//line[i]為y集合中i與x集合中的line[i]配對

int we[maxn];//已配對所對應的邊權值

int n,m,cnt,slack;

int head[maxn];

struct edge

edge[maxm];

bool find(int u)

}else if(tlx[u])

lx[u]=edge[e].w;

} }for(int u=1;u<=n;u++)

}} return 1;

}void addedge(int u,int v,int w)

struct km

}for(int u=1;u<=nx;u++)

for(int i=1;i<=ny;i++)

slack=inf;

for(int i=1;i<=nx;i++)}}

}if(slack==inf)break;}}

return 1;

}int best_match()

return res;

}}kk;

KM演算法模板

這是hdu2255 include include include include includeusing namespace std const int maxn 305 const int inf 0x3f3f3f3f int love maxn maxn 記錄每個妹子和每個男生的好感度 in...

KM演算法模板

km演算法是用來求完全二分圖最大完美匹配的演算法,其原理是不斷尋找增廣路 增廣路定理 相關性質 在最大二分圖匹配圖中,w x y lx x ly y include include include include include using namespace std const int maxn ...

模板 KM演算法

km 演算法計算帶權二分圖最優匹配 模板一 dfs 演算法,時間複雜度 o n 4 const int maxn 310 const ll inf 0x3f3f3f3f3f3f3f3f match i j表示右邊的第i個點匹配左邊的第j個點,也可能這兩個點之間其實沒有連邊,也就是權值為零 int n...