BFS
文章平均质量分 60
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
POJ3414(BFS+[手写队列])
贴一发自己写的手写队列…..#include <stdio.h>#include <iostream>#include <string.h>#include <math.h>#include <stdlib.h>#include <queue>#include <set>#include <stack>#include <algorithm>using namespace std;原创 2016-03-03 17:55:18 · 988 阅读 · 0 评论 -
JAG Practice Contest for ACM-ICPC Asia Regional 2016B题【BFS】
题意:就是公主要逃跑,士兵要抓公主,问你能不能逃跑哇;思路:就是终点搞成起点,然后BFS一下就好了,最后枚举一下出口到公主的距离是不是#include using namespace std;typedef long long LL;const int N=2e2+10;struct asd{ int x,y;};int dx[4]={0,0,-1,1};原创 2016-10-04 00:56:39 · 929 阅读 · 0 评论 -
lightoj 1099【dijkstra/BFS】
题意:求 1-N 的第二长路,一条路可以重复走if two or more shortest paths exist, the second-shortest path is the one whose length is longer than those but no longer than any other path思路:一开始想的就是:我只要在spfa中更新的时候记录原创 2016-11-15 21:28:40 · 455 阅读 · 0 评论 -
lightoj1066【BFS】
题意:就是按照A->B->C->D....去拿,求步数;思路:有一个注意点:如果碰到合法字母吃掉,那么下一步就可以吃了;有一种方法,就是我BFS最多26次,每次走个A->B,一步一步走;还有就是搞一个BFS,然后中间初始化一下就好了。这道题目深刻地理解BFS就是起点到终点的一个过程~(●'◡'●)也像走一步再走一步#include using namespace st原创 2016-11-30 23:27:41 · 374 阅读 · 0 评论 -
CodeForces 586D【BFS】
题意:s是这个人开始位置;连续相同大写字母是 Each of the k trains,相应的火车具有相应的字母;'.' 代表空;有个人在最左列,上面有连续字母代表的火车,火车从左边出去的话,会从右边继续进来,一开始是人先往右走一步,然后上下或者一步,然后火车往左移两步。n有100,代表长度,k代表火车的数量;思路:BFS;走完还要再走两个= =、妈个鸡啊。一开原创 2016-11-20 00:20:17 · 564 阅读 · 0 评论 -
hrbust1444 逃脱 【BFS】
Description 这是mengxiang000和Tabris来到幼儿园的第四天,幼儿园老师在值班的时候突然发现幼儿园某处发生火灾,而且火势蔓延极快,老师在第一时间就发出了警报,位于幼儿园某处的mengxiang000和Tabris听到了火灾警报声的同时拔腿就跑,不知道两人是否能够逃脱险境?幼儿园可以看成是一个N*M的图,在图中一共包含以下几种元素:“.”:表示这是一块空地,是可以原创 2016-11-21 01:26:25 · 595 阅读 · 0 评论 -
POJ3697【BFS】
题意:n个点的完全图,删掉m条边以后,求与1联通的点的个数。思路:直接判断遍历图,n(n+1)/2=5e7复杂度n^2......,哦,这样也行。。。//#include#include#include#includeusing namespace std;typedef long long LL;const int N=1e4+10;const int M原创 2017-02-10 13:54:39 · 456 阅读 · 0 评论 -
POJ1111【BFS】
在搜1011的时候误搜了1111,简单BFS吧,多一个X就是多四个面,每次看看他的四个面有多少个重复的,然后剪掉,最后答案加上就好了;code://#include #include#include#include#include#include#includeusing namespace std;typedef long long LL;typedef pair PI原创 2017-02-14 22:14:17 · 350 阅读 · 0 评论 -
SPOJ SERGRID 【BFS】
思路:在一个方向上走K步,基础BFS。注意标记;注意路径;PS:显著注释是记录路径。#includeusing namespace std;const int N=5e2+10;char ma[N][N];bool vis[N][N];int dx[4]={0,0,-1,1};int dy[4]={1,-1,0,0};/***************///in原创 2017-03-08 23:21:30 · 434 阅读 · 0 评论 -
Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)【A,B,C】
翻车!翻车!codeforces782AA题:水。代码:#include using namespace std;typedef long long LL;int num[100010];int main(){ int n,x; memset(num,0,sizeof(num)); scanf("%d",&n); int sum=0原创 2017-03-06 12:54:44 · 104 阅读 · 0 评论 -
CodeForces 116C 【BFS】
思路:求所有树的最大高度?注意:所有树从树根开始?#include using namespace std;typedef long long LL;struct asd{ int to; int next;}e[2500];int head[2500],tol;int pre[2500];int n;void add(int u,int v){ e[原创 2017-03-20 22:38:02 · 483 阅读 · 0 评论 -
ZOJ 2849【瞎暴力的搜索】
思路:靠评测机抖一抖的思路:拿个队列维护一下符合类型的可以搜索(指四周还存在可以遍历的点)的点。然后暴力搜索,所以问题来了,这个暴力搜索会大大地重复遍历次数。这个思路的代码见第一份。那么问题就很明显了,为了减少遍历次数,所以我们BFS,每次仅遍历附近四个,然后拿优先队列维护天数小的,类型小的,这样复杂度仅仅是多了个log,减少了很多重复遍历次数。第一份代码:#include原创 2017-03-27 23:06:32 · 171 阅读 · 0 评论 -
CodeForces 131D【图特性+BFS】
题意:只有一个环,然后环都是0(环缩点相当于树的根),然后其余的输出到根的距离思路:可以从度为1的 开始搜 把那些分支全标记掉,然后再取没有标记掉的,BFS一下搞出距离。具体这个标记:倒着搜这样肯定没有多对一,标记掉度等于2的那些点就好了,度>2的要减减,而且环里的点的度不可能搜到度 = 2 因为环=点的度为2,他又连出一条边 度=3。后话:这种n个点 n条边/n-1条原创 2017-03-23 00:02:09 · 595 阅读 · 0 评论 -
zzuli 1726【BFS】
额。。闲着无聊去打。。然后出事情了。。。出题人喜欢玩语文姿势。。。坑在了他开关碰完以后,居然消失的意思是 这个grid变成合法' . ';!!!不可理喻啊!!!思路:BFS,8个方向,四个角还要判断一下。#include using namespace std;typedef long long LL;const int N=1e2+10;int dx[8]={0,原创 2017-04-04 23:41:22 · 117 阅读 · 0 评论 -
HUST1350【DFS/BFS瞎搞】
题意:给出一棵 TireTire 树,一个结点 indexindex 的价值: value[V]=∑V∈Leave Nodedis{index,V}value[V] = \sum_{V \in Leave\ Node } dis\{index, V \} 这棵 TrieTrie 树的价值是 min{V,V∈Trie Node}\min\{ V,V\in Trie\ Node\}; 求这棵 T原创 2017-05-01 20:59:58 · 332 阅读 · 0 评论 -
CodeForces788C【BFS】
题意:给你k个数,让你挑几个数,使得他们的平均数是n。思路:想了半天,想到了应该是搞一下每个数与n的差值,然后再处理,但是这个范围就蒙逼了,也看到了[-1000,1000],但是如果我说这个值我枚举到了超过1000怎么办呢。。然后就卡住了。看了一下 http://blog.csdn.net/wchhlbt/article/details/68927002 可以BFS的时候强行不让他变大(>100原创 2017-05-20 22:51:14 · 501 阅读 · 0 评论 -
上海市高校程序设计邀请赛暨华东师范大学第九届 ECNU Coder 程序设计竞赛 C. 神奇怪兽在哪里
题意:略.思路:先把 ∗* 连通块附近的 .. 位置存起来A={}A=\{\},然后拿P去一个一个连续的到达,到达用BFS写,存个路径,有一个小优化就是在某一次BFS过程中如果已经到达过一些位置,那么就没必要再BFS到这个位置了。 PS: 然后没想到的是跑的还飞快…猜测数据稍微有点弱…#include <bits/stdc++.h>using namespace std;typedef pai原创 2017-05-21 17:22:43 · 888 阅读 · 0 评论 -
HDU4166【BFS】
题意:给你一幅图,给你起点和终点,再给你机器人所面对的方向,机器人可以左转90°,右转90°,向前进一格,每种操作都是1秒,,求起点和终点最少花费下的路径条数,方案数;思路:这里有一个不同就是机器人还有一个先转弯,再前进。一开始想的是最短路,问题就是最短路计数,后来一直WA;在跑最短路的时候记录一个方向状态;开一个数组记录一下方案数,当到达这个结点时是否有多条路,然原创 2016-10-03 00:16:23 · 437 阅读 · 0 评论 -
Lightoj1002 【搜索】
题意:两两之间的点的花费就是:从A点到B的一条路上某段的最大权值;给一个起点,求到各起点的最小花费。思路:一开始的思路:n不是才500,我先建个图,然后DFS一下,不对,是2500;如果直接暴搜,肯定T了。因为可能有一个环,然后你不能处理一个节点的向上节点。= =、T在这里,所以每次暴搜就相当于每次暴搜了整幅图;一开始写了一发,还以为再一次深刻理解DFS,然后T的我一脸懵逼原创 2016-10-16 19:46:24 · 644 阅读 · 0 评论 -
HDOJ2579,BFS(三维数组标记)
三维数组对于我这个萌萌的新手来说真是酷酷的,帅到不行,,,三维数组前面还看到空间的哪一题HDOJ1240,这一题时间上的标记,更酷了!!!不说废话了,贴一发代码;#include #include #include #include #include #include#include #include #include using namespace原创 2016-02-24 10:40:25 · 593 阅读 · 0 评论 -
BFS+PRIM
在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要求用最短的路径L连接所有字母,输出这条路径L的总长度。一格的长度为1,而且移动的方法只有上、下、左、右,所以在无任何墙的情况下(但“墙#”是必须考虑的,这里只是为了说明)任意两个字母之间的距离就是直接把 横坐标之差 加上 纵坐标之差 注意的是,可行的路为 字母 和 空格 不可行的转载 2016-03-24 23:03:09 · 407 阅读 · 0 评论 -
poj3278
poj3278 手写队列high一high,跑的飞起;#include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;#define INF 9999999const double pi=3.1原创 2016-05-25 22:11:00 · 436 阅读 · 0 评论 -
hdoj1495简单BFS
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define mod 9973#define N 100010int n,m,s;bool vis[102][110][1原创 2016-05-27 19:12:55 · 441 阅读 · 0 评论 -
基础BFS+DFS poj3083
//满基础的一道题 //最短路径肯定是BFS。 //然后靠右,靠左,就DFS啦 //根据前一个状态推出下一个状态,举靠左的例子,如果一开始是上的话,那么他的接下来依次就是 左,上 , 右 , 下 //如果我们用数组存一下 左,上 , 右 , 下, //而且你会发现他原来的状态是d,下一个状态就是=((d-1+4)%4+i)%4,其实你比划一下,就会知道左的话就是下开始变,上的话就是左开原创 2016-05-29 13:08:48 · 517 阅读 · 0 评论 -
poj3185//BFS随便切...
//poj 3185 2 //利用bit,通过位运算切换状态 ,然后BFS一下,轻易水过。 3 //说完好像很简单。。。是的,简单是简单,弱第一次以这种位运算姿势过题,太劲。膜思路 ORZ... 4 5 #include<iostream> 6 #include<string.h> 7 #include<set> 8 #include<queue> 9 #include<sstre原创 2016-05-20 13:19:19 · 449 阅读 · 0 评论 -
老天待我不薄,又来这么一题POJ1753
还是位运算+BFS系列题;现在这种真是无比喜欢,今天搞了一上午这题。。。因为状态的改变写错了…T.T#include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;int head,tail;bool vis[1<<17];int ste原创 2016-05-21 12:42:11 · 491 阅读 · 0 评论 -
hdoj1728【搜索的两种写法】
以前的一道题目,现在拿到总觉得是DFS,然后T掉就没什么想法了,很狗的看了以前的写法(以前还是看题解的AC的),是BFS,每次都要转弯,但是之前你的达到一种他走到了死路,所以才是不得不转弯,写法也是非常棒,预处理的转弯数是-1就可以达到一开始转弯的+1抵消。但是总觉得还是有dfs,毕竟k这么小。先贴一发BFS的,睡觉了~#include<iostream>#include<cstdio>#inc原创 2016-07-09 00:59:12 · 925 阅读 · 0 评论 -
hdoj1253
一题简直模板的BFS,只是三维遍历而已。#include #include #include #include #include #include#include #include #include using namespace std;int A,B,C,t;int dxy[7][3]={ 0,-1,0, 0,原创 2016-02-25 16:31:16 · 384 阅读 · 0 评论 -
hihoCoder搜索二·骑士问题
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define mod 9973#define N 100010int ma[10][10];int f1[10][10]原创 2016-07-03 16:04:51 · 549 阅读 · 1 评论 -
PTA 2-1 列出连通集【DFS+BFS基础】
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0#include <iostream>#include <stdio.h>#include <string.h>#include <stack>#include <queue>原创 2016-07-05 18:10:27 · 714 阅读 · 0 评论 -
跳马~~~HDU1372
基础BFS,水过就好~手写队列优化~~#include <iostream>#include <stdio.h>#include <string.h>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <algorithm>us原创 2016-07-05 19:44:09 · 441 阅读 · 0 评论 -
hdoj5024【BFS/暴力】
题意: 在可以行走的区域内,只能转一次90度的弯,问你最长这条路可以多长。 思路: 我们可以看到/*1238 4765*/转90度的路径会是横竖,也就是1-3-5-7; 还有斜的:2-4-6-8; 我们可以对一个点直接BFS/暴力一下,方向是八个方向,然后计算对应的90度方向上的距离和,开个数组表示某方向上的路径长度,我们可以发现90度方向在数组上的规律,然后再暴力找个最大。 复原创 2016-08-12 15:37:05 · 387 阅读 · 0 评论 -
poj1979【基础bfs/dfs】
挑战习题搜索-1 题意: 给定起点,然后求一个可以到达的数量,位置“.”都可以走。每次应该是上下左右都可以走。 思路: 这题应该DFS更好写,但是BFS也可以写吧。 好久没写了… dfs挫代码……..#include<cstdio>#include<iostream>#include<math.h>#include<string.h>#include<algorithm>usi原创 2016-08-12 22:42:50 · 385 阅读 · 0 评论 -
poj3669【bfs】
题意: 有个**要看流星雨,可是流星雨会砸死他的。。。 给出n个流星雨下落的坐标,时间,如果那个**在下落坐标或是上下左右就会gg,问你他最短跑到流星雨打不到的地方的时间。 思路: ①:预处理出一个矩阵,每个坐标代表最早下落时间; ②:直接bfs…中间要标记掉走到的坐标,不能往回走,还是满基础的。贴一发挫code………….#include<cstdio>#include<map>#in原创 2016-08-13 20:38:44 · 477 阅读 · 0 评论 -
HDU4255【BFS】
题意:给你一个矩阵,矩阵里是的数是这么安排的,然后给你两个数,让你求这两个数的最短距离,素数不能去;思路:预处理一下素数表,矩阵,然后找一下起点和终点的坐标,跑一下BFS就好了;#include#include#include#include#includeusing namespace std;const int INF=-0x3f3f3f3f;const int原创 2016-10-15 22:18:09 · 474 阅读 · 0 评论 -
CodeForces877D【BFS】
思路: BFS本身已经决定先搜到的位置肯定小于等于后搜到的位置层数(步数)。 那就直接break呗~ 然后就一直wa49… 完全不知道发生了什么,改改就过了。。//#pragma comment(linker, "/STACK:102400000,102400000")#include <stdio.h>#include <string.h>#include <iostream>#i原创 2017-11-30 00:07:53 · 550 阅读 · 0 评论