HDU-1845-Jimmy's Assignment
时间:2019-05-15
本文章向大家介绍HDU-1845-Jimmy's Assignment,主要包括HDU-1845-Jimmy's Assignment使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
链接:https://vjudge.net/problem/HDU-1845
题意:
给一个有向图,求最大匹配。
思路:
有相图的最大匹配,可以通过加上反向边, 求这个无向图的最大匹配,
原图的最大匹配就是无向图的最大匹配除2.
详细解释:https://xwk.iteye.com/blog/2129301
https://blog.csdn.net/u013480600/article/details/38638219
代码:
#include <iostream> #include <memory.h> #include <string> #include <istream> #include <sstream> #include <vector> #include <stack> #include <algorithm> #include <map> #include <queue> #include <math.h> #include <cstdio> #include <set> #include <iterator> #include <cstring> using namespace std; typedef long long LL; const int MAXN = 5e3+10; int Next[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; vector<int> G[MAXN]; int Link[MAXN], Vis[MAXN]; int n, m, k; bool Dfs(int x) { for (int i = 0;i < G[x].size();i++) { int node = G[x][i]; if (Vis[node] == 0) { Vis[node] = 1; if (Link[node] == -1 || Dfs(Link[node])) { Link[node] = x; return true; } } } return false; } int Solve() { memset(Link, -1, sizeof(Link)); int cnt = 0; for (int i = 1;i <= n;i++) { memset(Vis, 0, sizeof(Vis)); if (Dfs(i)) cnt++; } return cnt; } int main() { int t; scanf("%d", &t); while (t--) { scanf("%d", &n); for (int i = 1;i <= n;i++) G[i].clear(); int l, r; for (int i = 1;i <= 3*n/2;i++) { scanf("%d%d", &l, &r); G[l].push_back(r); G[r].push_back(l); } int cnt = Solve(); printf("%d\n", cnt/2); } return 0; }
原文地址:https://www.cnblogs.com/YDDDD/p/10872085.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos7宝塔环境安装VeryNginx waf系统实现高级防火墙功能
- 使用curl探测访问响应时长
- dnspod通过接口解析本地ip python脚本
- 如何修复WordPress死亡白屏(WSoD)故障问题
- linux: 添加一个IP地址
- Nginx简易防CC策略规则
- 如何编写和优化WordPress网站的Robots.txt
- 如何处理WordPress网站404状态死链
- (三)RecyclerView简单滑动场景分析
- AWS EC2实例开启IPv6方法 阅读模式
- centos7宝塔环境安装VeryNginx waf系统实现高级防火墙功能
- 腾讯云中关于授权子用户QCloudResourceFullAccess权限后使用api接口创建购买cvm没有支付权限的解决办法
- centos7中systemctl系统服务和资源限制故障
- centos7 安装zabbix并监控windows服务器
- 宝塔面板插件-shadowsocks可视化管理