二分图 在两个房间里分配
1.常见输入 给出 a b c
囚犯分房间 https://www.acwing.com/problem/content/259/ 二分答案+二分图
二分 染色处理到小于等于mid 的值的时候需要continue 相当于不管他把他放在同一个房间里面
dfs(c)
首先当前点染成c
枚举所有领点
如果边的权值小于mid的话就需要不考虑continue
j表示领点
如果领点已经有颜色
而且如果颜色和当前点的颜色相同 返回false
否则如果染色(3-c)失败 返回false
最后能到达这里返回真
所有颜色清空
枚举所有点
没有染过就给他染色
如果染色返回矛盾
返回false
所有点没有报错返回正确
2.二维棋盘覆盖 一个格子只能选另一个相邻一个格子 看看能选多少个
int match[N] //对右边图的连接的点 这里存的是二维所以是[][]
bool st[N] 有没有
dfs 问问左边的图
枚举所有领点
如果不合法 continue
如果遍历过 continue
标记为已经遍历
t表示下一个点 也就是对面图的女生
如果match[j]==0(女生没被分配过) 或者dfs(match[j]) 为女生现在的男友分配对象 后成功
那么就为这个女生分配这个男生
返回真
枚举所有一个图(这里是枚举奇数点)
如果能find 答案++;