临时文档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 ...
随机推荐
- shell下添加计划性任务
*/1 * * * * /bin/sh /tmp/hello.sh ###每1分钟执行以下/tmp下的hello.sh脚本 service crond restart 重启任务计划 * 12 * ...
- jQuery中ajax调用当前页面方法
$.ajax({ type: 'POST', url: 'AddressManager.aspx/GetProvince',//AddressManager.aspx当前页面 data: '{cach ...
- luigi学习6--parameters详解
parameter就好比是一个task的构造方法.luigi要求你在类的scope上定义parameter. 如下面就是一个定义parameter的例子: class DailyReport(luig ...
- HTML5 学习笔记 1
1.音频.视频 <!DOCTYPE HTML> <html> <body> <audio controls="controls"> ...
- C# 修改IE 源代码参照样例
using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; ...
- python2 编码问题详解
实例对比 定义 type str unicode print encode('utf8') decode('utf8') encode('unicode-escape') encode('string ...
- Stream,Reader/Writer,Buffered的区别(1)
Stream: 是字节流形式,exe文件,图片,视频等.支持8位的字符,用于 ASCII 字符和二进制数据. Reader/Writer: 是字符流,文本文件,XML,txt等,用于16位字符,也就是 ...
- 什么是O/R Mapping(ORM)
ORM,即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一 ...
- 使用golang+java实现基于ecb的3eds加解密
http://www.100hack.com/2014/04/14/golang%E4%B8%AD%E7%9A%84des%E5%8A%A0%E5%AF%86ecb%E6%A8%A1%E5%BC%8F ...
- Status Bar in iOS7
This is a very important change in iOS 7: the status bar is no longer a separate bar. It’s now somet ...