![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
文章平均质量分 74
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
ZOJ 2787 Children of the Candy Corn
普通的广搜,靠左和靠右的下一行和下一列增量要想清楚#include #include #include using namespace std;struct state{ int ci,cj,ctime,cDir; state(int i=0,int j=0,int ct=0,int cd=0):ci(i),cj(j),ctime(ct),cDir(cd){}};const原创 2013-04-05 11:06:30 · 458 阅读 · 0 评论 -
ZOJ 2887 Server Relocation(BFS)
刚开始建图,1000 太大了,数据可能比较多,超时了.后来就不建图了,BFS的时候算距离就可以了.比较坑爹的是 坐标要用double存,说好的integers呢.#include #include #include #include #include #include using namespace std;const int maxn = 1005;double x原创 2013-05-05 20:41:55 · 487 阅读 · 0 评论 -
ZOJ 2864 Catch the thief(多条最短路+BFS)
首先把最短路计算出来.然后把查询时间存下来.再从终点开始BFS,如果dis[u] == dis[v] + w 说明点v在最短路上,那么就枚举查询,满足dis[u] > qtime[i] && dis[v] #include #include #include #include #include #include using namespace std;const in原创 2013-05-06 09:44:04 · 670 阅读 · 0 评论 -
ZOJ Walk Through the Forest (dijkstra + BFS || 记忆化搜索)
意思是求 p1,p2,...ph 1到home的路径上 pi到ph的值必须大于 p(i+1)到ph的值.首先dijkstra求出home到所有点的最短路dis[i].然后BFS,统计路径.设pathnum[i]为1到i的路径数量,初始pathnum[1]为1然后入队.对于每一个队列头i 对于每一条边i->j若dis[i] 则把pathnum[j]累加上pathnum[i],原创 2013-05-02 11:51:45 · 577 阅读 · 0 评论 -
ZOJ 1505 Solitaire(双向广搜)
哭了 搞了一天.#include #include #include #include using namespace std;class state{public: int times; long long v; state():times(0),v(0){}};mapvis1,vis2;long long target;int di[] = {-1, 1, 0,原创 2013-05-01 15:52:19 · 559 阅读 · 0 评论 -
ZOJ 1675 Push!!(BFS)
用了两个BFS第一个BFS是搜箱子的位置,第二个BFS是判断人是否能够到达箱子的下一个位置的相反位置,只有在相反的位置他才能把箱子推到指定的位置判重的话要用个三维数组vis[i][j][k] k表示从哪个方向过来#include #include #include #include using namespace std;struct state{ int pCuri,pC原创 2013-04-30 11:33:12 · 694 阅读 · 0 评论 -
ZOJ 1136 Multiple(BFS)
#include #include #include #include #include #include #include using namespace std;const int maxn=5100;int n,m,a[12];bool vis[maxn];struct node{ string num; int mod; node(string str=""原创 2013-04-18 22:58:32 · 559 阅读 · 0 评论 -
ZOJ 2081 Mission Impossible(BFS+DFS)
首先BFS找最短距离然后DFS搜索每一条最短路径,统计成功和失败的路径数目#include #include #include #include #include using namespace std;const int maxn=15;char maze[maxn][maxn];int di[]={-1,1,0,0},dj[]={0,0,-1,1},n,m,minDis原创 2013-04-14 10:04:52 · 600 阅读 · 0 评论 -
ZOJ 2416 Open the Lock (BFS)
#include #include #include #include using namespace std;#define pii pair int delta[]={-1,1};bool vis[10000];int bfs(int s,int t){ memset(vis,0,sizeof(vis)); queue q; q.push(make_pair(s,0));原创 2013-04-13 14:39:38 · 569 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator(BFS+二进制判重)
很奇怪,提交时候用C++就超时而G++则不会.875MS过的#include #include #include #include const int maxn=65538;using namespace std;struct state{ int data; int cp;};bool vis[maxn];state q[maxn];int fa[maxn];原创 2013-04-13 10:10:20 · 461 阅读 · 0 评论 -
POJ 2251 Dungeon Master
三维的迷宫问题//2013年1月3日 11:08:23//author:zxj#include #include #include using namespace std;struct point{ int i,j,z; point(int ii=0,int jj=0,int zz=0):i(ii),j(jj),z(zz){}};int L,R,C;int tl,tr原创 2013-04-05 16:06:44 · 453 阅读 · 0 评论 -
ZOJ 1103 Hike on a Graph(BFS)
题意:给出一个完全图,任意两点间都有边,每条边都有一个颜色,在某3个点上放了3个棋子,每次只允许让一个棋子通过一条边走到另一个点上并且走的这条边的颜色必须和另外两个棋子之间的边颜色相同(完全图,任意两点都有边),求走到同一个点上最少需要多少步.思路:可以设计一个3维的状态,dis[x][y][z]代表3个点分别在x, y, z点上时候的最少步数,那么就可以用类似spfa的松弛方法来更新就可以了原创 2014-04-05 11:50:00 · 791 阅读 · 0 评论