zoukankan      html  css  js  c++  java
  • bnuoj 44359 快来买肉松饼

    http://www.bnuoj.com/contest/problem_show.php?pid=44359

    快来买肉松饼


    Time Limit: 5000 ms     Case Time Limit: 5000 ms     Memory Limit: 32768 KB

    Description

    转眼又到了一年一度的圣战(光棍)节了,单身狗大表哥决定和一群一样孤独的盆友一起出来过节,一起玩游戏,输的人给赢的人买肉松饼,这样大家都不会感到孤单。

    为了防止平局出现,大表哥给大家准备了一个奇数(大于一的奇数)个人可以围成一圈一起玩的游戏(每个人必须与两个人相邻)。大表哥希望大家都能参加到游戏里去,但无奈有些盆友之间有误会,有误会的盆友不能坐在相邻的位置一起愉快的玩耍。每个人可以同时参与多个游戏,但当所有能参与游戏的人数小于K时,大表哥将取消这次聚会。

    Input

    输入第一行一个整数T(T ≤ 100)表示共T组数据。

    每组数据第一行三个数N,M,K表示大表哥共有N个盆友,M表示有M对误会关系,当所有参与人数大于等于K时大表哥举办聚会。(1 ≤ N≤ 1000 , 1 ≤ M ≤ 1000000,3 ≤ K)

    接下来M行每行两个数a,b分别代表编号a和编号b的盆友间存在误会。(编号从1到n,误会关系可能重复)

    Output

    若大表哥可以举行聚会输出“Let's Fire!”,否则输出“What a Pity.”。

    Sample Input

    1
    5 5 3
    1 4
    1 5
    2 5
    3 4
    3 5

    Sample Output

    Let's Fire!

    Source

    FOJ有奖月赛-2014年11月


    分析:

    题目只要求和左右两个人没有冲突就满足题意,直接深搜到k个人即可 , 否则就What a pity.


    AC代码:


     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 const int N = 1e3 + 10;
     7 int n, m, k, flag, vis[N], relation[N][N];
     8 
     9 void dfs(int s, int cur, int* res)
    10 {
    11     if(flag)
    12         return;
    13     if(cur >= k && relation[res[0]][res[cur - 1]])
    14     {
    15         flag = 1;
    16         return;
    17 
    18     }
    19     for(int i = 1; i <= n; i++)
    20     {
    21         if(relation[s][i] && !vis[i])
    22         {
    23             vis[i] = 1;
    24             res[cur] = i;
    25             dfs(i, cur + 1, res);
    26             vis[i] = 0;
    27         }
    28     }
    29 }
    30 
    31 int main()
    32 {
    33     int t;
    34     scanf("%d", &t);
    35     while(t--)
    36     {
    37         memset(relation, 1, sizeof(relation));
    38         memset(vis, 0, sizeof(vis));
    39         flag = 0;
    40 
    41         scanf("%d%d%d", &n, &m, &k);
    42         while(m--)
    43         {
    44             int x, y;
    45             scanf("%d%d", &x, &y);
    46             relation[x][y] = 0;
    47             relation[y][x] = 0;
    48         }
    49 
    50         if(k > n)
    51         {
    52             printf("What a Pity.
    ");
    53             continue;
    54         }
    55 
    56         int res[N];
    57         for(int i = 1; i < n; i++)
    58             if(!flag)
    59                 dfs(i, 0, res);
    60 
    61         printf(flag == 1 ? "Let's Fire!
    " : "What a Pity.
    ");
    62     }
    63     return 0;
    64 }
    View Code

     没有下面的代码会报TLE

    1         if(k > n)
    2         {
    3             printf("What a Pity.
    ");
    4             continue;
    5         }
    View Code
  • 相关阅读:
    Node.js EventEmitter
    Node.js 事件循环
    Node.js 回调函数(阻塞与非阻塞)
    Node.js REPL(交互式解释器)
    NPM使用介绍
    H5表单验证特性(杂七杂八知识点)
    HTML5存储之indexedDB
    本地存储localStorage和sessionStorage
    高德地图API实例--移动端婚礼请帖
    高德地图API之DOM事件+自定义事件
  • 原文地址:https://www.cnblogs.com/jeff-wgc/p/4458311.html
Copyright © 2011-2022 走看看