临时文档9--dfs
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
int snum,n,m,sum,flag;
int map[35][35];
int hum[35][35];
char st[500];
int c,mmax;
int num[30],tt[30];
int so[30];
int v[30];
int judge()
{
int i;
for(i=1;i<=mmax;i++)
{
if(v[i] ==0)
return 0;
}
return 1;
}
void dfs(int x)
{
if(flag)
return;
if(judge()==1)
{
flag=1;
return ;
}
int i,j,k;
int tmp;
tmp=so[x] ; memset(num,0,sizeof(num));
for(j=1;j<=mmax;j++)
{
if(hum[x] [j] >0&&v[j] ==0)
{
for(k=1;k<=mmax;k++)
{
if(hum[j] [k] >0&&v[k] ==0)
num[j] ++;
}
tmp+=(so[j] /(num[j] +1));
}
}
// cout<<"tem=="<<tmp<<" "<<snum<<endl; if(tmp<snum)
{
// cout<<"1"<<endl;
v[x] =1;
for(j=1;j<=mmax;j++)
{
tt[j] =so[j] ;
// cout<<"hun[1][1]="<<hum[x][j]<<endl;
// cout<<"v[1]="<<v[j]<<endl;
if(hum[x] [j] >0&&v[j] ==0)
{
so[j] -=(so[j] /(num[j] +1));
}
}
// cout<<"2"<<endl;
for(i=1;i<=mmax;i++)
{
// if(i==x)dfs(i);
// else{
if(v[i] ==0)
dfs(i);
flag=judge();
//if(flag)return;
// cout<<"try"<<endl; // cout<<"try2"<<endl;
// }
}
// if(!flag){
v[x] =0;
// cout<<"try3"<<endl;
for(j=1;j<=mmax;j++)
{
// cout<<"try4"<<endl;
if(hum[x] [j] >0&&v[j] ==0)
{
so[j] +=(tt[j] /(num[j] +1));
}
}
// cout<<"try5"<<endl;
// }
}
// cout<<"try6"<<endl;
return;
} int main()
{
int i,j,t;
scanf("%d",&t);
while(t--)
{
cin>>n>>m;
mmax=0;
memset(hum,0,sizeof(hum));
for(i=1;i<=n;i++)
{
scanf("%s",st);
for(j=0;j<m;j++)
{
map[i] [j+1]=st[j] -'A'+1;
c=map[i] [j+1];
if(c>mmax)
mmax=c;
} }
for(i=1;i<=mmax;i++) scanf("%d",&so[i]);
scanf("%d",&snum); for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(i+1<=n&&map[i] [j] !=map[i+1][j] )
{
hum[map[i] [j] ][map[i+1][j] ]=hum[map[i+1][j] ][map[i] [j] ]=1;
}
if(j+1<=n&&map[i] [j] !=map[i] [j+1])
{
hum[map[i] [j] ][map[i] [j+1]]=hum[map[i] [j+1]][map[i] [j] ]=1;
}
if(i-1>0&&map[i] [j] !=map[i-1][j] )
{
hum[map[i] [j] ][map[i-1][j] ]=hum[map[i-1][j] ][map[i] [j] ]=1;
}
if(j-1>0&&map[i] [j] !=map[i] [j-1])
{
hum[map[i] [j] ][map[i] [j-1]]=hum[map[i] [j-1]][map[i] [j] ]=1;
}
}
}
flag=0;
// cout<<"1hhe"<<endl;
for(i=1;i<=mmax;i++)
{
if(flag==1)
break;
dfs(i);
}
// cout<<"hhe"<<endl;
if(flag)
{
printf("Saruman\n");
}
else
printf("Human\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
临时文档9--dfs的更多相关文章
- Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
添加排序属性: window.swaggerUi = new SwaggerUi({ ... apisSorter: "alpha", // can also ...
- WebAPI使用多个xml文件生成帮助文档
一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...
- WebAPI使用多个xml文件生成帮助文档(转)
http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the- ...
- VC多文档编程技巧(取消一开始时打开的空白文档)
VC多文档编程技巧(取消一开始时打开的空白文档) http://blog.csdn.net/crazyvoice/article/details/6185461 VC多文档编程技巧(取消一开始时打开的 ...
- 使用YUIDoc生成JS文档
其实YUIDoc主页已经写的比较清晰了,但有一些概念和细节再点出一些注意的地方. 目前最新的YUIDoc使用nodejs进行开发安装和使用都非常的方便. 我们只需要将我们的代码加上必要的注释,便可以很 ...
- SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- WORD文档中插入页码的问题
原文链接:http://www.360doc.com/content/11/0216/15/849254_93539436.shtml 一.页码从第二页开始1.选择“插入-页码”,打开“页码”对话框. ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
- js获取窗口滚动条高度、窗口可视范围高度、文档实际内容高度、滚动条离浏览器底部的高度
1.获取窗口可视范围的高度 //获取窗口可视范围的高度 function getClientHeight(){ var clientHeight=0; if(document.body.clientH ...
随机推荐
- POJ C程序设计进阶 编程题#3 : 排队游戏
编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在幼儿 ...
- C#操作xml
最进在做一个项目,需要用到xml做配置文件,但是自己忘的差不多了,所以就温习了一遍.以下是我项目中所用到的,所以肯定也不全面. 1.新建xml文件 using System.Xml;//需要引用 st ...
- C# 多线程运用
没有用过多线程,所以没有过多的了解操作原理以及怎么编写多线程 后来才只知道将一个传入的集合分别拆开为N个集合来进行使用 //分线程执行 public static void OperateThread ...
- 【PHP】配置环境变量
使用Zend Framework的zf.bat创建项目时,出现如下提示:"php.exe"不是内部或外部命令,也不是可运行的程序或批处理文件. 解决方法: 配置php的环境变量: ...
- ubuntu 12.04 LTS(64位)安装apache2
在网上找了很多文章,说法不一,不知道应该用哪种方法,后来想就用其中最简单的吧,装不好再卸了重装, 然后就...装上了,用的是tar包源码安装,下面是步骤 1.去官网下载apache2.2.25源码包, ...
- js8月-4号,,思想
1.js使用观察者模式,做异步编程.面向事件编程. 2.事件执行 (1)用户触发事件(2)定时执行 作业:选项卡,导航栏.
- SQLServer2005,2000获取表结构:字段名、类型、长度、主键、非空、注释
SQLServer 2005 SELECT d.name N'TableName', d.xtype N'TableType', a.colorder N'ColumnIndex', a.name N ...
- 使用RMAN验证备份的有效性
--验证控制文件和参数文件: RMAN> restore validate controlfile; Starting allocated channel: ORA_DISK_1 channel ...
- 第五章 管理程序流(In .net4.5) 之 异常处理
1. 概述 本章包括.net4.5中异常处理相关的部分. 2. 主要内容 2.1 处理异常 ① try.cahtch.finally 机制,无需多言. ② 使用 Environment.FailFas ...
- python学习第二天第一部分
备注:写程序不能写重复性的代码 学习内容:数据类型.for循环.while循环.字符编码.文件处理 一.for循环 1.简单的for循环 for i in range(10): # 此处意思为:循环r ...