题目:http://poj.org/problem?id=1719

要求每一行必须都被射到,每一列恰好一个格子被射到。

通过行r去求匹配数num

当r<=c时,num是可以等于r的

这时候每一行都被射到过,可能存在列没有被射到,可以再该列中任意选一个格子,因为对于每一行中被射中的格子数没有限定

当r>c时,num不可能等于r

也就是说不是所有行都可以被射到,所以不符合要求,直接输出no

代码:

View Code

 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相关推荐

  1. POJ 3660 Cow Contest [Floyd]

    POJ - 3660 Cow Contest http://poj.org/problem?id=3660 N (1 ≤ N ≤ 100) cows, conveniently numbered 1. ...

  2. poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)

    1 /* poj 2187 Beauty Contest 2 凸包:寻找每两点之间距离的最大值 3 这个最大值一定是在凸包的边缘上的! 4 5 求凸包的算法: Andrew算法! 6 */ 7 #in ...

  3. POJ 3660 Cow Contest 传递闭包+Floyd

    原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  4. poj 2187 Beauty Contest

    http://poj.org/problem?id=2187 题意:给你n个坐标点 ,求两点之间的最大距离的平方 题解:求出凸包,枚举顶点两两之间的距离 #include<cstdio> ...

  5. poj 2187 Beauty Contest (凸包: 最远点对,最长直径 , 旋转卡壳法)

    http://poj.org/problem?id=2187 题意: 最长的点对近距离的平方: 题解: 旋转卡壳法, 要注意的地方是,有 所有点共线的情况,所以,(求凸包时)要将,共线点去出 :    ...

  6. POJ 3660 Cow Contest

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

  7. poj 3660 Cow Contest 传递闭包

    题目链接: http://poj.org/problem?id=3660 题目大意: 有n头牛,每头牛都有一个战斗值,农夫约翰想给这些牛排名次,但是只有m场比赛,约翰想知道有多少头牛的名次是确定的. ...

  8. POJ - 2187 Beauty Contest(最远点对)

    http://poj.org/problem?id=2187 题意 给n个坐标,求最远点对的距离平方值. 分析 模板题,旋转卡壳求求两点间距离平方的最大值. #include<iostream& ...

  9. POJ 3660 Cow Contest(传递闭包floyed算法)

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

最新文章

  1. 5分钟搜索120个平台10年数据!监视软件细节曝光:人人“裸奔”,预测警务歧视严重...
  2. segformer 使用笔记
  3. python进阶书籍推荐-豆瓣评分9.4!年度最值得推荐的Python进阶书
  4. (最优解)L1-028 判断素数 (10分)——17行代码AC
  5. 使用笛卡尔积 cross join解决傻傻的问题
  6. linux 从命令行自动识别文件并将其打开的命令
  7. ASP.NET MVC教程六:两个配置文件详解
  8. linux的grub损坏,如何利用Grub命令启动损坏的Linux系统?
  9. 一:ActiveMQ知识整理
  10. char* 去除后面几个字符_【算法打卡】去除重复字母
  11. Mac(不限于)中几个有内涵的工具
  12. spark.network.timeout参数入门
  13. 不可能解开的谜题 (程序员修炼之道,评注者序)
  14. RocketMQ 消息队列单机部署及使用
  15. 使用mysql服务来记录用户的反馈
  16. error: x264_bit_depth undeclared (first use in this function) did you mean x264_picture_t
  17. 了解Minimax算法
  18. OpenAccessLibrary 网站简单爬取
  19. 学术英语理工(第二版)Unit1课文翻译
  20. 前端大佬谈国产开源:VUE 的成功在于社区运营

热门文章

  1. [react-router] React-Router的实现原理是什么?
  2. React开发(148):componentWillReceiveProps
  3. 前端学习(3152):react-hello-react之初始化react
  4. 前端学习(3139):react-hello-react之生命周期组件挂载过程
  5. [html] html5的游戏引擎你了解多少?都有哪些比较好用的引擎呢?
  6. [vue] 在组件中怎么访问到根实例?
  7. [css] 请说下你对css对象模型(CSSOM)的理解
  8. [css] 使用css将图片转换成黑白的效果
  9. 前端学习(1683):前端系列实战课程之让蛇吃食物变长
  10. 前端学习(1512):vue-router文档