【海岛帝国系列赛】No.7 海岛帝国:神圣之日
2016-06-22 13:44
267 查看
50237242海岛帝国:神圣之日
【试题描述】
战争持续九个月了。“购物券”WHT的军队还在跟恐怖分子僵持着。WHT和LJX已经向“公务员”告急,情况不宜乐观。YSF为守护帝国决定打开“够累 的”星际仓库来化解恐怖分子的威胁。他和LTJ、WHT、LJX、YSM、LYF等人来到了传说中的星际仓库的防爆门前。“郭同学”TONY,“演 员”KLINT,“美的”STEVE……都被恐怖分子的间谍困在里面。由于情况复杂,恐怖分子在门上加了一层层密码,如果没有顺利答对,“蝴蝶”将会引 爆。整个城市将毁灭。门上有这样一幅图,一排有两个空位,地下散落着N枚“微型机器人”其中编号1,2,3表示TX型号(呵呵呵,大家都知道“州长” 吧)4,5,6表示T-5000型号,每排必须有TX、T-5000型号各一个。当把两个机器人插在一排时,如果这两个机器人互相感应就会亮起红灯。要求 尽量让有感应的机器人插在一起。请问如何摆放,才能让最多的机器人满足条件?
【输入要求】
* 第一行两个正整数N,M,表示有N个机器人,有M个关系道
* 接下来M行:每行两个数A,B表示机器人A和B之间有感应
【输出要求】
* 一行:表示能满足的最大值
【输入实例】
6 5
1 4
1 5
2 5
2 6
3 4
【输出实例】
3
【其他说明】
依旧,
M均小于40
N均小于10
【试题分析】
这里用到了二分图匹配,所以我们先来了解一下,什么是二分图。
简而言之,就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。
区别二分图,关键是看点集是否能分成两个独立的点集。
View Code
【试题描述】
战争持续九个月了。“购物券”WHT的军队还在跟恐怖分子僵持着。WHT和LJX已经向“公务员”告急,情况不宜乐观。YSF为守护帝国决定打开“够累 的”星际仓库来化解恐怖分子的威胁。他和LTJ、WHT、LJX、YSM、LYF等人来到了传说中的星际仓库的防爆门前。“郭同学”TONY,“演 员”KLINT,“美的”STEVE……都被恐怖分子的间谍困在里面。由于情况复杂,恐怖分子在门上加了一层层密码,如果没有顺利答对,“蝴蝶”将会引 爆。整个城市将毁灭。门上有这样一幅图,一排有两个空位,地下散落着N枚“微型机器人”其中编号1,2,3表示TX型号(呵呵呵,大家都知道“州长” 吧)4,5,6表示T-5000型号,每排必须有TX、T-5000型号各一个。当把两个机器人插在一排时,如果这两个机器人互相感应就会亮起红灯。要求 尽量让有感应的机器人插在一起。请问如何摆放,才能让最多的机器人满足条件?
【输入要求】
* 第一行两个正整数N,M,表示有N个机器人,有M个关系道
* 接下来M行:每行两个数A,B表示机器人A和B之间有感应
【输出要求】
* 一行:表示能满足的最大值
【输入实例】
6 5
1 4
1 5
2 5
2 6
3 4
【输出实例】
3
【其他说明】
依旧,
M均小于40
N均小于10
【试题分析】
这里用到了二分图匹配,所以我们先来了解一下,什么是二分图。
简而言之,就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。
区别二分图,关键是看点集是否能分成两个独立的点集。
#include<iostream> using namespace std; int e[101][101]; int match[101]; int book[101]; int n,m; int dfs(int u) { int i; for(i=1;i<=n;i++) if(book[i]==0&&e[u][i]==1) { book[i]=1; if(match[i]==0||dfs(match[i])) { match[i]=u; match[u]=i; return 1; } } return 0; } int main() { int i,j,t1,t2,sum=0; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { cin>>t1>>t2; e[t1][t2]=1; e[t2][t1]=1; } for(i=1;i<=n;i++) match[i]=0; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) book[j]=0; if(dfs(i)) sum++; } printf("%d",sum); }
View Code
相关文章推荐
- ASP.NET MVC部分视图PartialView的使用
- OFBiz 初步 之 权限设计
- UITableView和UITableViewCell的层级关系
- C#里的SubString和Convert.ToDateTime
- 配置AndroidStudio:IDE和VM选项,JDK,等等
- 利用递归算法和堆栈实现android思维导图大纲图的动态绘制
- 软件工程UML图的学习(各种关系及线箭头疑点解析)
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
- GiT 和 svn的区别
- jquery实现相册随机切换
- Redis安装并设置密码
- 常见MFC UI界面库
- springmvc .html请求返回json数据转换错误
- Java中堆内存和栈内存详解
- 聊聊深度学习这档子事(4):广义逆矩阵 vs 梯度下降法
- java——你不得不爱的 增强for循环
- 存储过程+游标+事务
- 将MathType公式粘贴到文档中的方法
- tcp-backlog配置
- ThinkPHP中M方法与D方法有什么区别