杭州现场赛的题。BFS+DFS

#include <iostream>
#include<cstdio>
#include<cstring>
#define inf 9999999
using namespace std; char mp[105][105];
int sq[5][5];
int step[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
struct pos
{
int x,y;
}; int n,m,prn,x,y,tmp,ans,cnt;
bool viss[5];
int bfs(pos bg,pos ed)
{
int i;
pos que[20000];
int front=0,rear=1;
bool vis[105][105]={false};
vis[bg.x][bg.y]=true;
que[0]=bg;
int cnt[20000]={0};
if(ed.x==bg.x&&ed.y==bg.y)
return 0;
while(rear>front)
{
for(i=0;i<4;i++)
{
if(que[front].x+step[i][0]>=0&&que[front].x+step[i][0]<n&&que[front].y+step[i][1]>=0&&que[front].y+step[i][1]<m&&
mp[que[front].x+step[i][0]][que[front].y+step[i][1]]!='#'&&!vis[que[front].x+step[i][0]][que[front].y+step[i][1]])
{
que[rear].x=que[front].x+step[i][0];
que[rear].y=que[front].y+step[i][1];
vis[que[rear].x][que[rear].y]=true;
cnt[rear]=cnt[front]+1;
if(que[rear].x==ed.x&&que[rear].y==ed.y)
return cnt[rear];
// cout<<que[rear].x<<' '<<que[rear].y<<endl;
rear++;
}
}
front++;
}
return -1;
}
void cal(int q)
{
int i;
if(cnt==prn)
return;
viss[q]=true;
for(i=1;i<=prn;i++)
{
if(!viss[i])
{
tmp+=sq[q][i];
viss[i]=true;
cnt++;
cal(i);
if(cnt==prn)
if(tmp<ans)
ans=tmp;
cnt--;
tmp-=sq[q][i];
viss[i]=false;
}
}
viss[q]=false;
return;
}
int main()
{
// freopen("in.txt","r",stdin);
while(cin>>n>>m&&(n+m))
{
memset(sq,0,sizeof(sq));
memset(viss,false,sizeof(viss));
int i,j;
ans=inf;
tmp=0;
cnt=0;
pos st;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='@')
{
st.x=i;
st.y=j;
}
}
}
cin>>prn;
pos pr[4];
for(i=0;i<prn;i++)
{
cin>>pr[i].x>>pr[i].y;
pr[i].x--;
pr[i].y--;
// cout<<pr[i].x<<" "<<pr[i].y<<endl;
}
bool f=true;
for(i=0;i<prn;i++)
{
sq[0][i+1]=bfs(st,pr[i]);
if(sq[0][i+1]==-1)
{
f=false;
break;
}
}
if(!f)
{
cout<<-1<<endl;
continue;
}
for(i=0;i<prn;i++)
{
for(j=0;j<prn;j++)
{
if(i==j)
continue;
int t=bfs(pr[i],pr[j]);
sq[i+1][j+1]=sq[j+1][i+1]=t;
}
}
cal(0);
cout<<ans<<endl;
}
return 0;
}

  

2013杭州现场赛B题-Rabbit Kingdom的更多相关文章

  1. HDU 4739 Zhuge Liang's Mines (2013杭州网络赛1002题)

    Zhuge Liang's Mines Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  2. HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU 4747 Mex (2013杭州网络赛1010题,线段树)

    Mex Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submis ...

  4. HDU 4741 Save Labman No.004 (2013杭州网络赛1004题,求三维空间异面直线的距离及最近点)

    Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. HDU 4816 Bathysphere (2013长春现场赛D题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 2013长春区域赛的D题. 很简单的几何题,就是给了一条折线. 然后一个矩形窗去截取一部分,求最 ...

  6. HDU 4800/zoj 3735 Josephina and RPG 2013 长沙现场赛J题

    第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showprobl ...

  7. 2013 ACMICPC 杭州现场赛 I题

    #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #in ...

  8. 2013杭州网络赛C题HDU 4640(模拟)

    The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  9. HDU 4821 String(2013长春现场赛I题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821 字符串题. 现场使用字符串HASH乱搞的. 枚举开头! #include <stdio.h ...

随机推荐

  1. jquery上传插件Jquery.uploadify.js-转

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示 ...

  2. (16)odoo8 API 指南

    http://odoo-new-api-guide-line.readthedocs.org/en/latest/index.html

  3. java多线程的常用方法(以及注意事项)

    /* * 线程的常用方法 * 1.start(); * 2.run(); * 3.sleep(int millsecond); * 4.isAlive(); -->判断线程是否还在运行 * 5. ...

  4. 课程设计(部分代码)之java版(记事本)

    /* *java课程设计之记事本(coder @Gxjun) * 编写一个记事本程序 * 要求: * 用图形用户界面实现. * 能实现编辑.保存.另存为.查找替换等功能. * 提示:使用文件输入输出流 ...

  5. 高度30px,宽度自适应,点线在文字中间

    <style>  .div{ position: relative; width: 100%; height: 30px; background: #ffff00}        .div ...

  6. Java集合——Map接口

    1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V  put(key,value) ...

  7. mvc学习记录

    1.关于mvc中的session在controller中传递 在用mvc开发新项目的时候,不久就遇到一个头大的问题,session在controller中传递居然出现空值,但明明一开始就赋值了,通过度 ...

  8. BZOJ1593 [Usaco2008 Feb]Hotel 旅馆

    裸上线段树,就是记的东西有点多... 每个点记区间左端最长0,右端最长0,中间最长0,和tag表示是否全为0/1 直接更新就好,查询的时候先查左儿子,然后查中间,最后查右儿子... /******** ...

  9. vs2010 快捷键大全 (转)

    VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O ...

  10. UVa 10253 - Series-Parallel Networks

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...