枚举支援的国家。。。

View Code

  1 /*
  2 DFS
  3 */
  4 #include<stdio.h>
  5 #include<string.h>
  6 #include<stdlib.h>
  7 #include<algorithm>
  8 #include<iostream>
  9 #include<queue>
 10 //#include<map>
 11 #include<math.h>
 12 using namespace std;
 13 typedef long long ll;
 14 //typedef __int64 int64;
 15 const int maxn = 105;
 16 const int inf = 0x7fffffff;
 17 const double pi=acos(-1.0);
 18 const double eps = 1e-8;
 19 const int maxm = 20;
 20 struct node{
 21     int val,be;
 22 }a[ maxm ];
 23 struct node2{
 24     int a,b,c;
 25 }ord[ maxn ];
 26 int n,m,k;
 27 int ans;
 28 bool judge(){
 29     for( int i=0;i<n;i++ )
 30         if( a[ i ].val>5 )
 31             return false;
 32     return true;
 33 }
 34 void dfs( int p ){
 35     ans = max( ans,p );
 36     if( p>=k ) return ;
 37
 38     int a1,a2,a3;
 39     a1 = ord[ p ].a;
 40     a2 = ord[ p ].b;
 41     a3 = ord[ p ].c;
 42
 43     a[ a1 ].val-=2;
 44     a[ a2 ].val+=2;
 45     a[ a3 ].val+=2;
 46     for( int i=0;i<n;i++ ){
 47         if( a[i].be==a[a2].be&&i!=a2 ) a[i].val++;
 48         if( a[i].be==a[a3].be&&i!=a3 ) a[i].val++;
 49     }
 50     if( judge()==true ) dfs( p+1 );
 51     a[ a1 ].val+=2;
 52     a[ a2 ].val-=2;
 53     a[ a3 ].val-=2;
 54     for( int i=0;i<n;i++ ){
 55         if( a[i].be==a[a2].be&&i!=a2 ) a[i].val--;
 56         if( a[i].be==a[a3].be&&i!=a3 ) a[i].val--;
 57     }
 58
 59     a[ a1 ].val+=2;
 60     a[ a2 ].val-=2;
 61     a[ a3 ].val+=2;
 62     for( int i=0;i<n;i++ ){
 63         if( a[i].be==a[a1].be&&i!=a1 ) a[i].val++;
 64         if( a[i].be==a[a3].be&&i!=a3 ) a[i].val++;
 65     }
 66     if( judge()==true ) dfs( p+1 );
 67     a[ a1 ].val-=2;
 68     a[ a2 ].val+=2;
 69     a[ a3 ].val-=2;
 70     for( int i=0;i<n;i++ ){
 71         if( a[i].be==a[a1].be&&i!=a1 ) a[i].val--;
 72         if( a[i].be==a[a3].be&&i!=a3 ) a[i].val--;
 73     }
 74
 75     a[ a1 ].val+=2;
 76     a[ a2 ].val+=2;
 77     a[ a3 ].val-=2;
 78     for( int i=0;i<n;i++ ){
 79         if( a[i].be==a[a2].be&&i!=a2 ) a[i].val++;
 80         if( a[i].be==a[a1].be&&i!=a1 ) a[i].val++;
 81     }
 82     if( judge()==true ) dfs( p+1 );
 83     a[ a1 ].val-=2;
 84     a[ a2 ].val-=2;
 85     a[ a3 ].val+=2;
 86     for( int i=0;i<n;i++ ){
 87         if( a[i].be==a[a2].be&&i!=a2 ) a[i].val--;
 88         if( a[i].be==a[a1].be&&i!=a1 ) a[i].val--;
 89     }
 90
 91 }
 92
 93 int main(){
 94     int ca;
 95     scanf("%d",&ca);
 96     for( int ii=1;ii<=ca;ii++ ){
 97         scanf("%d%d%d",&n,&m,&k);
 98         for( int i=0;i<n;i++ )
 99             scanf("%d",&a[ i ].be);
100         for( int i=0;i<n;i++ )
101             scanf("%d",&a[ i ].val);
102         for( int i=0;i<k;i++ )
103             scanf("%d%d%d",&ord[ i ].a,&ord[ i ].b,&ord[ i ].c);
104         ans = 0;
105         dfs( 0 );
106         printf("Case #%d: %d\n",ii,ans);
107     }
108     return 0;
109 }
110                 

转载于:https://www.cnblogs.com/xxx0624/archive/2013/03/30/2991005.html

HDU4536+DFS相关推荐

  1. [JS][dfs]题解 | #迷宫问题#

    题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...

  2. [C] [编程题]连通块(DFS解决)

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...

  3. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  4. usaco snail trails(dfs)

    dfs啊,我还写了好长时间,一天不如一天. /* ID:jinbo wu TASK: snail LANG:C++ */ #include<bits/stdc++.h> using nam ...

  5. usaco shuttle puzzle(dfs剪枝)

    这题一看我也以为找规律,然后无法下手之后又想到bfs最后看题解是用dfs大神dfs用的出神入化. 不过这题好像可以找规律. /* ID:jinbo wu TASK: shuttle LANG:C++ ...

  6. usaco street race(dfs)

    一开始我觉得很麻烦但第一题好做由于数据较小直接每个点删后dfs就可以了,第二问我不知道如何判断有没有公共的道路,最后看别人的也挺简单的就是看分别从两条公路的起点开始dfs如果他们能到达同一点就代表有公 ...

  7. Forest Program dfs+tanjar仙人掌

    题目链接 CCPC2019 F题. 题意:给一颗仙人掌树,让你求每一个小环的边的个数,用快速幂即可求解. 思路:第一反应是tanjar乱搞,把每个环上的点取出来,类似于缩点的方法.但是忽然感觉dfs能 ...

  8. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

  9. A and B and Lecture Rooms CodeForces - 519E LCA+dfs序

    看到这个题的第一个思路就是就是统计以每一个点为根的所有节点个数,然后具体就分情况讨论一下即可. 因为刚刚学习了dfs序,这个题就用了dfs序来通过进出时间戳来相减表示其为根的子节点个数. 分情况 我们 ...

  10. POJ - 2763 Housewife Wind LCA+dfs序+线段树

    q次询问求两个点之间的距离,并且可以随时修改某条边的长度,最短距离可以用lca来求,但是树上维护每一个点到root的距离必须要用dfs序来记录时间戳,在dfs的时候顺便记录每一条边(u,v)对应的v节 ...

最新文章

  1. 查看tomcat服务器返回的响应消息,Tomcat上的WebSocket握手返回意外响应代码500
  2. LeetCode 430. Flatten a Multilevel Doubly Linked List
  3. os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
  4. lcd像素点密度_【教程】设置添加LCD密度(DPI)设置
  5. android开发学习笔记系列(6)--代码规范
  6. 基于Lua语言的wireshark插件编写
  7. 凸函数,凸优化问题,凸二次规划问题
  8. python自动排版公众号_GitHub - sunshine2337/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
  9. Python数据分析实例
  10. 老狗——python求中位数
  11. OpenBSD 6.8 切换到国内镜像源的一种临时方法:声明PKG_PATH
  12. 基于标记的分水岭分割算法
  13. 移动硬盘显示成cd驱动器解决办法
  14. excel如何实现数据钻取
  15. 默哀日、灾难日,纪念日,哀悼日等网站都变成黑白色
  16. 在线测试地址 mp3/mp4
  17. 4.MyBatis源码解析-MyBatis扩展点--阿呆中二
  18. 免费收录网站搜索引擎登录入口大全
  19. javamail设置多个收件人发送简单文本邮件
  20. kaggle之泰坦尼克号乘客死亡预测

热门文章

  1. 【业界】火山翻译:工业级应用与研究
  2. 实战必备!文本分类中的一些经验和 tricks
  3. 图神经网络中的Graph Pooling
  4. 【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency Parsing
  5. 李宏毅机器学习——序列标记问题
  6. 博文视点算法书单|让算法学习不再难
  7. 复旦大学肖仰华教授在线授课!从专家系统到知识图谱演进
  8. 解决了!联邦学习+推荐系统,冷启动和数据隐私问题双双K.O
  9. 《大数据——大价值、大机遇、大变革》试读
  10. 19【推荐系统4】DeeoCrossing