![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
文章平均质量分 79
fookwood
这个作者很懒,什么都没留下…
展开
-
POJ 1545 / ZOJ 1333 Galactic Import (bfs || 最短路径)
<br />被归在最短路径下面,其实完全可以用bfs解决,要说bfs也算是dijkstra的一种特殊情况吧。<br /> <br />这道题的最大的难度不是解决问题的过程,而是读题的过程,题意叙述可够难为人的,英文啊英文。。。<br /> <br />星球间运送货物(双向的),每个星球都有独特的资源。如果不能直接到达的话中间星球要收取费用5%,问运送到地球可以达到最大价值的是从哪个星球运送的,不要管那个星号“*”所描述的乱七八糟的东西,就是星球与地球有直接的连接。单终点最短路径转化为单源最短路径(当然若果你原创 2010-08-08 20:17:00 · 1080 阅读 · 0 评论 -
ZOJ 1430 / POJ 2679 The Erythea Campaign (bfs+dijkstra)
<br />繁,但是不难。<br /> <br />首先,建图,题中给出的是m*n的矩阵,里面包含了所有stronghold的分布,但是你需要把他转换成一个图。但是路径不能穿过堡垒,多以说两个堡垒之间的两个点不能相互到达。还有就是每个点应该保存它可以到达的点的信息,当使用dijkstra求最短路径的时候,这些点可以当邻接表使用,很方便的。<br /> <br />接下来是每个的危险值,求法是m+n-d,不会出现负值。d的意思是它到达离他最近的堡垒的距离。对于每个堡垒上的点做bfs求出所有点到他的最短距离,如原创 2010-08-28 00:07:00 · 1153 阅读 · 1 评论 -
ZOJ 1221 Risk
<br />这个算是图论里面的简单题了,可以用floyd,dijkstra,bfs去做,,只当练手。。<br /> <br /> <br /> <br />floyd做。。<br />#include<stdio.h> #include<string.h> #include<stdlib.h> int mat[21][21]; const int INF = 99999; int main(void) { int n,from,to,t; int i,j,k,start=1;原创 2010-09-15 16:07:00 · 1433 阅读 · 0 评论 -
ZOJ 2416 Open the Lock
简单的广度优先搜索。我的代码很繁,不想简化想方法了。#include #include #include #include struct node { int n; int ceng; } t,e;; int flag[10000]; int main(void) { std::queue q; int cases,cha; int from,to; int g,s,b,qi; scanf("%d",&cases);原创 2010-10-09 23:44:00 · 819 阅读 · 0 评论 -
ZOJ 1649 Rescue
<br />关于守卫的处理我一直wa,最后愣是把bfs重写了一遍.<br /> <br />把守卫压入队列之前不用管他是否是'r'或者'x',当他从队列弹出时队x进行特殊处理.<br /> <br />#include<iostream> #include<cstdio> #include<cstring> #include<queue> struct point { int x,y; int ceng; }start,e,t; int dir[4][2]={1,0,-1,原创 2010-10-10 08:26:00 · 689 阅读 · 0 评论 -
ZOJ 1940 Dungeon Master
<br />三维迷宫..现在这种题真的是根切菜一样.....<br /> <br />#include<cstdio> #include<cstring> #include<cstdlib> #include<queue> char mat[32][32][32]; int dir[6][3] = {1,0,0,-1,0,0, 0,1,0,0,-1,0, 0,0,1,0,0,-1}; int fl原创 2010-10-12 18:39:00 · 1309 阅读 · 0 评论 -
ZOJ 1438 Asteroids!
<br />三维的迷宫搜索。<br /> <br />题目中的地图是按照层数给定的。<br /> <br />题目中给出起点终点时候是先列再行再层数,这点一定要注意,我wa了好多次。。<br /> <br />#include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> int dir[6][3] = {1,0,0,-1,0,0, 0,1,0,0,-1,0,原创 2010-10-10 19:55:00 · 674 阅读 · 0 评论