题目链接:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85

http://poj.org/problem?id=1130

这两个题只有输入输出形式不一样。ZOJ的麻烦一点,这里用的ZOJ的输入输出方式

解题报告:

1、输入方式sscanf(line,"%d%d",&a,&b);表示在文本line中提取两个整形数据到a,b中

2、从外星人的角度来看,就是搜索单源最短路径,采用的方式是广搜。

3、删除某个点,从入口进入(0号房间),查看是否可以走到外星人的位置,采用深搜。

4、在删除哪一个点时,用枚举即可。

#include <stdio.h>
#include <string.h>
#include <queue> using namespace std; #define INF 0x3f3f3f3f
#define MAXN 105 int n,et;///n个房间,外星人所在的房间
bool data[MAXN][MAXN]; ///图的邻接矩阵
int dis[MAXN]; ///各点到外星人的房间的最短路径长度
int used[MAXN]; ///广度优先搜索,站在外星人的角度看,就是单源最短路径问题
///搜索各个房间到外星人最短距离
void bfs_path()
{
memset(dis,INF,sizeof(dis));
dis[et]=; queue <int>q;
q.push(et); int x;
while(!q.empty())
{
x=q.front(); ///取队列头结点
q.pop();
for(int i=;i<n;i++)
{
///经过房间x到外星人比从房间i到ET更近
if(data[i][x]&&dis[x]+<dis[i])
{
q.push(i);
dis[i]=dis[x]+;
}
}
}
} ///去掉房间i,从房间0出发,判断能否到达外星人房间
///深度优先搜索
///形参id是当前正在搜索的房间编号
int dfs_search(int id)
{
///成功到达外星人房间
if(id==et) return ; ///房间id已经搜索
used[id]=; ///搜索下一个出口
for(int i=;i<n;i++)
{
if(!used[i]&&data[id][i])
{
if(dfs_search(i)) return ;
}
} return ;
} int main()
{
int T,iCase;
char line[];
int a,b;///源房间,目标房间
scanf("%d",&T);
for(iCase=;iCase<T;iCase++)
{
scanf("%d%d\n",&n,&et);
memset(data,false,sizeof(data)); ///读取数据
while(gets(line))
{
if(strcmp(line,"")==)
break;
sscanf(line,"%d%d",&a,&b);
data[a][b]=true;
} bfs_path(); ///枚举搜索最优解
int d=dis[]; int room=; for(int i=;i<n;i++)
{
if(i==et) continue; memset(used,,sizeof(used));
///设置在房间i,也就是说在图中将房间i拿掉
used[i]=; if(!dfs_search()&&dis[i]<d)
{
room=i;
d=dis[i];
}
} if(iCase) printf("\n");
printf("Put guards in room %d.\n",room);
}
return ;
}

广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)的更多相关文章

  1. Dijkstra单源最短路径,POJ(2387)

    题目链接:http://poj.org/problem?id=2387 Dijkstra算法: //求某一点(源点)到另一点的最短路,算法其实也和源点到所有点的时间复杂度一样,O(n^2); 图G(V ...

  2. POJ 1135 -- Domino Effect(单源最短路径)

     POJ 1135 -- Domino Effect(单源最短路径) 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两 ...

  3. Til the Cows Come Home(poj 2387 Dijkstra算法(单源最短路径))

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32824   Accepted: 11098 Description Bes ...

  4. 【算法导论】单源最短路径之Bellman-Ford算法

    单源最短路径指的是从一个顶点到其它顶点的具有最小权值的路径.我们之前提到的广度优先搜索算法就是一种无权图上执行的最短路径算法,即在所有的边都具有单位权值的图的一种算法.单源最短路径算法可以解决图中任意 ...

  5. 经典贪心算法(哈夫曼算法,Dijstra单源最短路径算法,最小费用最大流)

    哈夫曼编码与哈夫曼算法 哈弗曼编码的目的是,如何用更短的bit来编码数据. 通过变长编码压缩编码长度.我们知道普通的编码都是定长的,比如常用的ASCII编码,每个字符都是8个bit.但在很多情况下,数 ...

  6. Dijkstra 单源最短路径算法

    Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...

  7. Bellman-Ford 单源最短路径算法

    Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...

  8. 洛谷P3371 【模板】单源最短路径

    P3371 [模板]单源最短路径 282通过 1.1K提交 题目提供者HansBug 标签 难度普及/提高- 提交  讨论  题解 最新讨论 不萌也是新,老司机求带 求看,spfa跑模板40分 为什么 ...

  9. 单源最短路径算法---Dijkstra

    Dijkstra算法树解决有向图G=(V,E)上带权的单源最短路径问题,但是要求所有边的权值非负. 解题思路: V表示有向图的所有顶点集合,S表示那么一些顶点结合,从源点s到该集合中的顶点的最终最短路 ...

随机推荐

  1. 2018.6.1学习CSS5里顺丰盒子小问题

    在制作下面这样的小盒子时 编写的代码 首先要对li元素设置浮动. 在设置这个li元素下面的a元素时, 因为没有转行内块,inline-block,结果显示出来的页面,鼠标在经过这个选择时(:hover ...

  2. Java Jdk 环境配置和测试

    测试jdk:1.6 安装完jdk1.6以后,在我的电脑中找到环境变量配置 在系统变量的Path 中输入 ;E:\Program Files (x86)\Java\jdk1.6.0_01\bin(路径根 ...

  3. Selenium2(WebDriver)中执行JavaScript代码 (转)

    在用selenium编写web页面的自动化测试代码时,可能需要执行一些JavaScript代码,selenium本身就支持执行js,我们在代码中可以使用executeScript.executeAsy ...

  4. 百度 CDN公共库

    http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs 简介 CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直 ...

  5. mysql时间戳

    select unix_timestamp('2013-01-01 10:10:10'); , '%Y-%m-%d %H:%i:%S' ) date_format(date,'%Y-%m-%d') - ...

  6. 如何实现Nginx+Keepalived中Nginx进程的高可用

    此架构我简单说明下: 一般为了维护方便,企业网站的服务器都在自己的内部机房里,只开放了Keepalived的VIP地址的两个端口80.443,通过Juniper SSG550防火墙映射出去,外网DNS ...

  7. 重启部署在Linux系统下的tomcat服务

    重启部署在Linux系统下的tomcat服务具体的操作步骤: 1.在Winscp上建立连接,输入用户和密码,这个密码一般是看不到的: 2.查看服务:ps -ef  |  gerp  Java  注意在 ...

  8. jquery截取、判断字符串的长度,中英文都可

    计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,& ...

  9. 设置 text-align: center;line-height:height 居中无效

    1.设置文字水平居中 内联元素(行内元素)使用: text-align: center: 使用后文字仍然没有居中 解决方法:设置width:100%: 块元素使用: margin: 0 auto; 2 ...

  10. Python之人工智能:PyAudio 实现录音 自动化交互实现问答

    Python 很强大其原因就是因为它庞大的三方库 , 资源是非常的丰富 , 当然也不会缺少关于音频的库 关于音频, PyAudio 这个库, 可以实现开启麦克风录音, 可以播放音频文件等等,此刻我们不 ...