zoukankan      html  css  js  c++  java
  • POJ 1719 Shooting Contest

    题目: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 else
    39 {
    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 else
    52 {
    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 }

      

  • 相关阅读:
    学习dubbo
    【Spring】SpringMVC配置文件
    Mac下git配置
    【Spring】入门HelloWorld
    【MySql】启动/停止
    Javaweb 编解码流程
    TensorFlow学习笔记1
    Nginx 代理配置
    【转】RPC介绍
    【dubbo】dubbo控制台搭建
  • 原文地址:https://www.cnblogs.com/lujiacheng/p/2117563.html
Copyright © 2011-2022 走看看