
二分图
宝宝睡醒了
这个作者很懒,什么都没留下…
展开
-
Swap HDU - 2819
Swap HDU - 2819 题意 给一个n*n的矩阵,其值为0或1,通过交换两行或两列将矩阵对角线都为1; 思路 如果一行中或一列中没有1,那么无论怎样交换都无法获得。 只交换行或只交换列一定可以交换出来 用二分图思想,将行数设为二分图的左边,将每行中‘1’的位置列数设为二分图的右面 代码: #include <iostream> #include <cstdio> #include <algorithm> #include <string> #inclu原创 2020-11-21 20:54:15 · 124 阅读 · 0 评论 -
Courses
Courses 二分图 题目大意: 一共有N个学生跟M门课程,一个学生可以任意选门课,问是否能够达成以下条件构成M个学生组成的学生会: 1.会里的每个学生都代表一门不同的课程(一个学生只能代表一门课) 2.每门课都有课代表 题目思路: 将学生和课程分到两个集合,套用二分图模板。 #include <bits/stdc++.h> const int N = 1100; using namespace std; const int maxn = 310; int mp[maxn][maxn]; in原创 2020-11-14 21:14:23 · 239 阅读 · 0 评论 -
The Accomodation of Students
The Accomodation of Students 二分图 题目大意: 有n个人,其中一些人相互认识。 佳爷需要将这n个人分成若干个小队(每个小队2人),并使得成员之间相互认识的小队数目最大。 但佳爷不是个随便的人,若无法将这n个人分成两组,且每组中的人相互不认识,那么佳爷将不会进行分队。 请问,佳爷是否需要进行分队呢? 思路: 先判断是否是二分图,用染色法,如果是二分图,用匈牙利算法找到最大匹配数,模板题。 代码: #include <bits/stdc++.h> using names原创 2020-11-14 21:05:19 · 186 阅读 · 0 评论 -
二分图
二分图 染色法判断二分图 通过染色法可知,黑色和白色交替染色不冲突的话,被染色的环一定不含奇数环。 const int N = 100010, M = 200010; int n, m; int h[N], e[M], ne[M], idx; int color[N]; //染色 void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx ++; } bool dfs(int u, int c) { color[u] =原创 2020-11-09 21:04:04 · 137 阅读 · 0 评论