裸km。
#include #include #include using namespace std;
const int max_n = 300 + 30;
const int inf = 0x3f3f3f3f;
int n_x, n_y;//兩邊的點數
int g[max_n][max_n];//二分圖權值
int link[max_n], l_x[max_n], l_y[max_n];//y中各店匹配的狀態, x,y,中的點標號
int slack[max_n];
bool vis_x[max_n], vis_y[max_n];
bool dfs(int x)
}else if(slack[y] > temp)
slack[y] = temp;
}return false;
}int km()
for(int x = 0; x < n_x; x++)}}
int res = 0;
for(int i = 0; i < n_y; i++)
if(link[i] != -1)
res += g[link[i]][i];
return res;
}int main()
return 0;
}
#include #include #include #include using namespace std;
const int maxn = 300 + 10;
const int inf = 0x3f3f3f3f;
int n;
int w[maxn][maxn];
int lx[maxn], ly[maxn]; // 頂標
int left[maxn]; // left[i]為右邊第i個點的匹配點編號
bool s[maxn], t[maxn]; // s[i]和t[i]為左/右第i個點是否已標記
bool match(int i)
} return false;
}void update()
}void km()
for(int i = 1; i <= n; i++)
}}int main()
}km(); // 最大權匹配
int ans = 0;
for(int i = 1; i <= n; i++)
ans += w[left[i]][i];
printf("%d\n", ans);
} return 0;
}
HDU 2255 奔小康賺大錢 KM
傳說在遙遠的地方有乙個非常富裕的村落,有一天,村長決定進行制度改革 重新分配房子。這可是一件大事,關係到人民的住房問題啊。村里共有n間房間,剛好有n家老百姓,考慮到每家都要有房住 如果有老百姓沒房子住的話,容易引起不安定因素 每家必須分配到一間房子且只能得到一間房子。另一方面,村長和另外的村領導希望...
hdu2255 奔小康賺大錢(KM)
problem description 傳說在遙遠的地方有乙個非常富裕的村落,有一天,村長決定進行制度改革 重新分配房子。這可是一件大事,關係到人民的住房問題啊。村里共有n間房間,剛好有n家老百姓,考慮到每家都要有房住 如果有老百姓沒房子住的話,容易引起不安定因素 每家必須分配到一間房子且只能得到一...
hdu2255 奔小康賺大錢(KM)
problem description 傳說在遙遠的地方有乙個非常富裕的村落,有一天,村長決定進行制度改革 重新分配房子。這可是一件大事,關係到人民的住房問題啊。村里共有n間房間,剛好有n家老百姓,考慮到每家都要有房住 如果有老百姓沒房子住的話,容易引起不安定因素 每家必須分配到一間房子且只能得到一...