![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
HT008_123
家人们点点关注叭
展开
-
小熊吃蛋糕
QAQ 枚举6种情况,但是肯定是吃大的不吃小的,否则会爆内存#include <cstdio> #include <cstring> #include <iostream> #include <queue> using namespace std; struct tw{ int a,b; int tot; }; int ans=1e7; int BFS(int a,int b) {原创 2017-06-18 09:04:20 · 327 阅读 · 0 评论 -
LG R7
T1 BFS暴力模拟#include <cstdio> #include <iostream> #include <queue> #include <cstring> #include <ctime> using namespace std; const int maxm=5100; int head[maxm],to[2*maxm],net[2*maxm]; int cnt; struct nod原创 2017-11-06 16:25:16 · 268 阅读 · 0 评论 -
道路分组
道路 分组 【问题描述】 A国是一个由N个城市构成的国家。这N个城市从1到��进行编号。其中,城 市1是A国中资源产出最多的城市,而城市N是A国唯一的港口的所在地。由于这 两个城市之间距离很远,所以A国没有直接从城市1向城市N修建道路。不过, 很多城市之间修建了一些单向通行的道路。从城市1经过若干条道路,是可以到 达城市N的。 城市中的单向道路总共有M条,从1到M进行编号。为了方便管理原创 2017-11-01 16:05:38 · 605 阅读 · 0 评论 -
洛谷10月月赛R1·浴谷八连测R1·提高组 T3
传送门 这题真的费劲! 我们用二进制来表示场上的剩下的黑棋子有哪些。 由于黑骑士我们吃不掉,国王吃了就GG。 所以最多的状态是有2^13个。 用s来表示状态 mp[s][x][y]来表示s状态下x,y是否被攻击到了 vis[s][x][y]来表示s状态下x,y是否走过了。 把所有的mp[s][x][y]预处理出来(要不你吃了棋子再还原太麻烦了啊) 然后用BFS转移就行啦!#incl原创 2017-10-15 17:33:30 · 329 阅读 · 0 评论 -
寻找道路
传送门 蒟蒻表示这题只会用BFS。。。 首先把输入的边反过来建,然后跑BFS,看终点可以跑到哪些点。 然后枚举所有点的邻接点,看看是否全部可以跑到终点。 然后把输入的图按照要求重构一遍。跑BFS求答案。。。#include <cstdio> #include <iostream> #include <queue> using namespace std; const int maxm=210原创 2017-10-18 14:53:15 · 267 阅读 · 0 评论 -
天天和树
直接找树上的最长路径,然后去找距离这条路径最长的点即可! 注意用BFS,这种数据范围DFS不爆才怪! 如何求树上最长路径呢? <1> 任取一个点A,从这点A搜索出一个距离节点A最远的一个点B; <2> 从节点B进行搜索,然后找到一个距离B最远的节点C; 这样从B到C就是树的直径了;#include <cstdio> #include <iostream> #include <queue>原创 2017-09-30 10:52:03 · 268 阅读 · 0 评论 -
LYK快跑!(run)
LYK快跑!(run) Time Limit:5000ms Memory Limit:64MB题目描述 LYK陷进了一个迷宫!这个迷宫是网格图形状的。LYK一开始在(1,1)位置,出口在(n,m)。而且这个迷宫里有很多怪兽,若第a行第b列有一个怪兽,且此时LYK处于第c行d列,此时这个怪兽对它的威胁程度为|a-c|+|b-d|。 LYK想找到一条路径,使得它能从(1,1)到达(n,m),且原创 2017-10-07 16:32:46 · 274 阅读 · 0 评论 -
P3818_小A和uim之大逃离 II
传送门 一个很简单的BFS,但注意f标记数组要开三维,来标记这个地方是嗑药到的还是没嗑药到的,因为可能不嗑药就可以到这个地方,你磕了药,然后无法到此地方,但是没有药无法在这个点移动,但你标记了,于是有药的无法拓展的这个点,导致无解(还是自己理解一下好)#include <cstdio> #include <iostream> #include <cmath> #include <iostream>原创 2017-08-15 21:00:29 · 287 阅读 · 0 评论 -
华容道!
QAQ 这道题目看上去感觉挺简单的,直接BFS暴力搜索应该就可以, 仔细一看数据范围 满分是不可能了,但应该能过60的数据,但是居然过了70的! Orz 讲一下实现方法,队列有四个变量,分别表示白格子的位置以及移动棋子的具体位置,枚举白格子可以走的四个方向,当白格子与移动棋子发生位置交换时,要注意变换移动棋子的位置,使用一个四维数组来进行标记,要注意每次搜索时清空F数组 下面是代码#i原创 2017-07-27 08:51:36 · 712 阅读 · 0 评论 -
HDU 6114
QAQ 其实就是在大的里面选小的方案数#include <cstdio> #include <string> #include <algorithm> #include <iostream> #define ll long long using namespace std; ll yh[2001][2001]; const int mod=1e9+7; void cf() { for(in原创 2017-08-18 11:16:38 · 254 阅读 · 0 评论 -
[POJ]1915 Knight Moves(双向宽搜)
题目链接 题目大意 给你一张N*N的图,一个起点x1,y1,一个终点x2,y2. 移动一次耗时1,问你最快到达终点的时间是多少 解题思路 很明显的是一道广度优先搜索的题目。 先写了写最传统的单向BFS 这就很尴尬了,单向宽搜跑的不慢啊。 不过我还是写了写双向宽搜 emmmm,差不多是快了1倍吧,如果数据强一点,效果应该会更明显。 双向宽搜 顾名思义,就原创 2018-01-16 14:45:09 · 460 阅读 · 1 评论