POJ 1719 Shooting Contest
题目:http://poj.org/problem?id=1719
要求每一行必须都被射到,每一列恰好一个格子被射到。
通过行r去求匹配数num
当r<=c时,num是可以等于r的
这时候每一行都被射到过,可能存在列没有被射到,可以再该列中任意选一个格子,因为对于每一行中被射中的格子数没有限定
当r>c时,num不可能等于r
也就是说不是所有行都可以被射到,所以不符合要求,直接输出no
代码:
1 #include<stdio.h> 2 #include<string.h> 3 #define maxn 1001 4 int r,c,n; 5 int mark[maxn]; 6 bool map[maxn][maxn],visit[maxn]; 7 8 bool dfs(int k) 9 {10 int i;11 for(i=1;i<=c;i++)12 {13 if(map[k][i]&&!visit[i])14 {15 visit[i]=1;16 if(mark[i]==-1||dfs(mark[i]))17 {18 mark[i]=k;19 return 1;20 }21 }22 }23 return 0;24 }25 26 27 void output(int num)28 {29 int i,j;30 if(num==r)31 {32 for(i=1;i<=c;i++)33 {34 if(mark[i]!=-1)35 {36 printf("%d ",mark[i]);37 }38 else39 {40 for(j=1;j<=r;j++)41 {42 if(map[j][i]==1)43 { 44 printf("%d ",j);45 break;46 }47 }48 }49 }50 }51 else52 {53 printf("NO");54 }55 printf("\n");56 }57 58 void solve()59 {60 int i,num=0;61 memset(mark,-1,sizeof(mark));62 for(i=1;i<=r;i++)63 {64 memset(visit,0,sizeof(visit));65 if(dfs(i))66 num++;67 }68 output(num);69 }70 71 int main()72 {73 int i,x,y;74 while(scanf("%d",&n)!=EOF)75 {76 while(n--)77 {78 scanf("%d%d",&r,&c);79 memset(map,0,sizeof(map));80 for(i=1;i<=c;i++)81 {82 scanf("%d%d",&x,&y);83 map[x][i]=1;84 map[y][i]=1;85 }86 if(r>c)87 {88 printf("NO\n");89 continue;90 }91 solve();92 }93 }94 return 0;95 }
转载于:https://www.cnblogs.com/lujiacheng/archive/2011/07/26/2117563.html
POJ 1719 Shooting Contest相关推荐
- POJ 3660 Cow Contest [Floyd]
POJ - 3660 Cow Contest http://poj.org/problem?id=3660 N (1 ≤ N ≤ 100) cows, conveniently numbered 1. ...
- poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
1 /* poj 2187 Beauty Contest 2 凸包:寻找每两点之间距离的最大值 3 这个最大值一定是在凸包的边缘上的! 4 5 求凸包的算法: Andrew算法! 6 */ 7 #in ...
- POJ 3660 Cow Contest 传递闭包+Floyd
原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- poj 2187 Beauty Contest
http://poj.org/problem?id=2187 题意:给你n个坐标点 ,求两点之间的最大距离的平方 题解:求出凸包,枚举顶点两两之间的距离 #include<cstdio> ...
- poj 2187 Beauty Contest (凸包: 最远点对,最长直径 , 旋转卡壳法)
http://poj.org/problem?id=2187 题意: 最长的点对近距离的平方: 题解: 旋转卡壳法, 要注意的地方是,有 所有点共线的情况,所以,(求凸包时)要将,共线点去出 : ...
- POJ 3660 Cow Contest
Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...
- poj 3660 Cow Contest 传递闭包
题目链接: http://poj.org/problem?id=3660 题目大意: 有n头牛,每头牛都有一个战斗值,农夫约翰想给这些牛排名次,但是只有m场比赛,约翰想知道有多少头牛的名次是确定的. ...
- POJ - 2187 Beauty Contest(最远点对)
http://poj.org/problem?id=2187 题意 给n个坐标,求最远点对的距离平方值. 分析 模板题,旋转卡壳求求两点间距离平方的最大值. #include<iostream& ...
- POJ 3660 Cow Contest(传递闭包floyed算法)
Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...
最新文章
- 5分钟搜索120个平台10年数据!监视软件细节曝光:人人“裸奔”,预测警务歧视严重...
- segformer 使用笔记
- python进阶书籍推荐-豆瓣评分9.4!年度最值得推荐的Python进阶书
- (最优解)L1-028 判断素数 (10分)——17行代码AC
- 使用笛卡尔积 cross join解决傻傻的问题
- linux 从命令行自动识别文件并将其打开的命令
- ASP.NET MVC教程六:两个配置文件详解
- linux的grub损坏,如何利用Grub命令启动损坏的Linux系统?
- 一:ActiveMQ知识整理
- char* 去除后面几个字符_【算法打卡】去除重复字母
- Mac(不限于)中几个有内涵的工具
- spark.network.timeout参数入门
- 不可能解开的谜题 (程序员修炼之道,评注者序)
- RocketMQ 消息队列单机部署及使用
- 使用mysql服务来记录用户的反馈
- error: x264_bit_depth undeclared (first use in this function) did you mean x264_picture_t
- 了解Minimax算法
- OpenAccessLibrary 网站简单爬取
- 学术英语理工(第二版)Unit1课文翻译
- 前端大佬谈国产开源:VUE 的成功在于社区运营
热门文章
- [react-router] React-Router的实现原理是什么?
- React开发(148):componentWillReceiveProps
- 前端学习(3152):react-hello-react之初始化react
- 前端学习(3139):react-hello-react之生命周期组件挂载过程
- [html] html5的游戏引擎你了解多少?都有哪些比较好用的引擎呢?
- [vue] 在组件中怎么访问到根实例?
- [css] 请说下你对css对象模型(CSSOM)的理解
- [css] 使用css将图片转换成黑白的效果
- 前端学习(1683):前端系列实战课程之让蛇吃食物变长
- 前端学习(1512):vue-router文档