scu4439 Vertex Cover(二分图最小点覆盖 匈牙利)
来源:互联网 发布:淘宝内衣买家秀看不到 编辑:程序博客网 时间:2024/05/20 22:27
链接:http://acm.scu.edu.cn/soj/problem.action?id=4439
frog has a graph with
.
She would like to color some vertices so that each edge has at least one colored vertex.
Find the minimum number of colored vertices.
Input
The input consists of multiple tests. For each test:
The first line contains
)
Output
For each test, write
integer which denotes the minimum number of colored vertices.
Sample Input
3 2 1 2 1 3 6 5 1 2 1 3 1 4 2 5 2 6
Sample Output
1 2
题意:有n个点m条边,每条边至少有一个顶点染色,至少要染多少个点
思路:二分图最小点覆盖,有一个公式 二分图最大匹配=最小点覆盖,匈牙利算法一代就出来了
比赛的时候想到这个公式了,也想到匈牙利了,就是没想明白是不是二部图,现在只感觉自己宛如一个zz
代码:(就是模板)
#include<iostream>#include<stdlib.h> #include<stdio.h> #include<cmath> #include<algorithm> #include<string> #include<string.h> #include<set> #include<queue> #include<stack> #include<vector> #include<functional> #include<map> using namespace std;const int INF = (int)1e9;const int maxn = 100000 + 10;typedef long long LL;//视情况定类型 int n, m;vector<int>G[maxn];bool inpath[maxn];//标记 int match[maxn];//记录匹配对象 void init(){memset(match, -1, sizeof(match));memset(inpath, false, sizeof(inpath));for (int i = 0; i < maxn; i++) {G[i].clear();}}bool findpath(int k) {for (int i = 0; i < G[k].size(); i++) {int v = G[k][i];if (!inpath[v]) {inpath[v] = true;if (match[v] == -1 || findpath(match[v])) {//递归 match[v] = k;//即匹配对象是“k妹子”的 return true;}}}return false;}void hungary() {int cnt = 0;for (int i = 1; i <= n; i++) { //n为需要匹配的“妹子”数 memset(inpath, false, sizeof(inpath));//每次都要初始化 if (findpath(i)) cnt++;}cout << cnt/2 << endl;}int main() {while (scanf("%d %d", &n, &m) != EOF) {init();for (int i = 1; i <= m; i++) {int a, b;scanf("%d %d", &a, &b);G[a].push_back(b);G[b].push_back(a);}hungary();}system("pause");return 0;}
0 0
- scu4439 Vertex Cover(二分图最小点覆盖 匈牙利)
- SCU 4439: Vertex Cover(最小点覆盖)
- 1134. Vertex Cover (25)(最小点集覆盖)
- SCU4439-Vertex Cover
- POJ3041 二分图最小点覆盖(匈牙利算法)
- Ural 2038 Minimum Vertex Cover(二分图最小顶点覆盖+快速读入)
- SPOJ 1435 - Vertex Cover(树形DP,树的最小点覆盖)
- HDU 6150 Vertex Cover(二分图)
- hdu2119(二分图+最小点覆盖+匈牙利算法)
- hdu1054(二分图+最小点覆盖数+匈牙利算法)
- 【POJ 3041 】Asteroids (匈牙利算法最小点覆盖&二分图)
- poj3041 Asteroids 最小点覆盖 二分图 匈牙利算法BFS
- SCU 4439 Vertex Cover (dfs +剪枝 一般图的点覆盖)
- POJ3041 二分图(性质)最小点覆盖等于最大匹配数(匈牙利模板题)
- POJ-1325-Machine Schedule-最小点覆盖(二分图-匈牙利算法)
- UVALive 6811 Irrigation Lines (二分图最小点覆盖--匈牙利算法)
- poj3041_匈牙利算法_二分图最小覆盖点(最大匹配数)
- POJ 1463 Strategic game (二分图最小覆盖点(匈牙利算法) 或 树形DP)
- MyBatis自动生成mapper,dao,model文件
- Jquery 表单校验
- React Native获取ListView上row的点击TouchableOpacity获取其ref
- 第二步 Javaweb目录结构
- 使用deepin中的一点问题总结
- scu4439 Vertex Cover(二分图最小点覆盖 匈牙利)
- Power OJ 1683(最小费用最大流)
- myeclipase 关联git 管理项目
- 正则常用符号说明
- 第三步 Javaweb项目部署
- asp.net web页面 实现301重定向
- 标点强行换行
- radio单选框checkbox复选框新样式 更改原生样式 toggle toggleClass hasClass
- Netty之Java堆外内存扫盲贴