题意:每一条边至少有一个端点要涂颜色,问最少涂几个点

思路:最小顶点覆盖:用最少的点,让每条边都至少和其中一个点关联,显然是道裸最小顶点覆盖题;

参考:二分图

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
typedef unsigned long long ull;
const int maxn = 500 + 10;
const ull seed = 131;
struct Edge{int v, next;
}edge[maxn * maxn * 2];
int head[maxn], match[maxn], vis[maxn], tot;
void addEdge(int u, int v){edge[tot].v = v;edge[tot].next = head[u];head[u] = tot++;
}
bool dfs(int u){for(int i = head[u]; i != -1; i = edge[i].next){int v = edge[i].v;if(!vis[v]){vis[v] = 1;if(match[v] == -1 || dfs(match[v])){match[v] = u;match[u] = v;return true;}}}return false;
}
int solve(int n){int ans = 0;memset(match, -1, sizeof(match));for(int i = 1; i <= n; i++){if(match[i] == -1){memset(vis, 0, sizeof(vis));if(dfs(i)) ans++;}}return ans;
}
int main(){int n, m;while(~scanf("%d%d", &n, &m)){memset(head, -1, sizeof(head));tot = 0;for(int i = 1; i <= m; i++){int u, v;scanf("%d%d", &u, &v);addEdge(u, v);addEdge(v, u);}printf("%d\n", solve(n));}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9898786.html

SCU 4439 Vertex Cover(二分图最小覆盖点)题解相关推荐

  1. scu 4439 Vertex Cover

    题意: 给出n个点,m条边,将若干个点染色,使得每个边至少有一点染色,问至少染多少个点. 思路: 如果是二分图,那就是最小点覆盖,但是这是一般图. 一般图的最小覆盖是npc问题,但是这题有一个条件比较 ...

  2. 二分图匹配 + 最小点覆盖 - Vertex Cover

    Vertex Cover Problem's Link Mean: 给你一个无向图,让你给图中的结点染色,使得:每条边的两个顶点至少有一个顶点被染色.求最少的染色顶点数. analyse: 裸的最小点 ...

  3. PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:首先把所有的边存储下来,使用结构体,结构体中保存两个端点. 然后对于每次询问,将出现过的顶点标志为true放在st数组中,然后遍历所有 ...

  4. 1134. Vertex Cover (25)

    1134. Vertex Cover (25) 时间限制 600 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A vertex ...

  5. 集合覆盖 顶点覆盖: set cover和vertex cover

    这里将讲解一下npc问题中set cover和vertex cover分别是什么. set cover: 问题定义: 实例:现在有一个集合A,其中包含了m个元素(注意,集合是无序的,并且包含的元素也是 ...

  6. 从顶点覆盖(Vertex Cover)到碰撞集(Hitting Set)的归约

    碰撞集问题 给定一组集合{S1,S2,S3,-,Sn}和预算b,问是否存在一个集合H,其大小不超过b,且H和所有Si(i=1, 2, -, n)相交. 顶点覆盖问题 给定图G,问是否存在一个顶点集合V ...

  7. Vertex Cover问题

    最近算法课上完成了一道作业题,Vertex Cover,拿出来与大家分享一下.算法不能说有多好,有问题欢迎致信ms08.shiroh@gmail.com 1,问题描述 首先Vertex Cover问题 ...

  8. Vertex Cover SCU - 4439

    点击打开链接 虽然不是二分图 但如果把每条边都建成双向边 再对每一个点都匹配一次 就相当于把这个图从某个位置划分成了男女生两个部分 用男生对女生匹配一次 反过来女生又对男生匹配一次 具体是怎么划分的不 ...

  9. 【题解】Luogu SP1435 PT07X - Vertex Cover

    原题传送门 求树的最小点覆盖,就是一个树形dp 类似于没有上司的舞会 dp的状态为\(f[i][0/1]\),表示i节点是否选择 边界是\(f[x][0]=0\),\(f[x][1]=1\) 转移方程 ...

最新文章

  1. linux服务器六个状态,六、Linux_SSH服务器状态
  2. 苹果cms10的php.ini目录列表,使用苹果CMSV10常见问题整理官方版
  3. ADO.NET编程小错误
  4. addcslashes php 有什么用处,PHP addcslashes函数有什么用
  5. C语言数组类型、数组指针类型、数组指针类型变量
  6. 反射获取成员变量并使用【应用】
  7. 为什么人会摆高姿态_为什么感情相处中不要随意掏心掏肺?
  8. ArcGIS Python编程案例-电子资料链接
  9. 你敢花一天时间看完本文在简历上添一笔“熟练使用C++编程”吗?
  10. libjpeg学习1:简单使用示例
  11. 2020-03-25 赵子清汇编语言教程
  12. 快速排序(java版)
  13. java 线程 回调函数_java 回调函数实现方式
  14. 微软云加速器助edoc2入云腾飞
  15. 大数据时代,我竟然在用Excel和SPSS做数据分析,真香!
  16. cms网站模板php修改,帝国cms前台投稿模板修改
  17. 码农的奋斗之路 富爸爸穷爸爸系列--提高你的财商 读后感
  18. 分布式:Docker
  19. shopapi总显示服务器异常,Shopee虾皮官方资料:打开API、串接API的常见问题与解答...
  20. 计算机网络基础15:MikroTik路由器使用方法

热门文章

  1. Python -- xlrd,xlwt,xlutils 读写同一个Excel
  2. 关于自动布局更新约束方法的总结
  3. visual studio 2005中生成网站和发布网站区别
  4. 作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars
  5. scanf函数具体解释与缓冲区
  6. 润乾V4导出TXT时自定义分隔符
  7. #define | enum(enumerator)
  8. 长沙理工大学校园网客户端无法卸载解决办法
  9. 2009年上半年网络工程师考试下午试卷参考答案(二)
  10. Dottext.Web.UI.Handlers.BlogExistingPageHandler