bfs
文章平均质量分 50
⊱⋛赫宇⋚⊰
这个作者很懒,什么都没留下…
展开
-
虫洞路线(最短路)
N个虫洞,M条单向跃迁路径。从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间。虫洞有白洞和黑洞之分。设一条跃迁路径两端的虫洞质量差为delta。1.从白洞跃迁到黑洞,消耗的燃料值减少delta,若该条路径消耗的燃料值变为负数的话,取为0。2.从黑洞跃迁到白洞,消耗的燃料值增加delta。3.路径两端均为黑洞或白洞,消耗的燃料值不变化。作为压轴题,自然不会是如此简单的最短路问题,所以每过1单位时间黑洞变为白洞,白洞变为黑洞。在飞行过程中,可以选择在一个虫洞停留1个单位.原创 2021-07-04 19:35:30 · 380 阅读 · 0 评论 -
P2124 奶牛美容
题目因为n,m都很小,并且有且只有三个联通块,所以我们可以用BFS直接灌水一遍,这样我们就可以统计出来那些处于那些联通块,然后求距离求距离我们分成两种不同的情况1.路径不相交的时候,那么他的距离就是ans=min(ans, min(dis[1][2]+dis[2][3],min(dis[1][3]+dis[2][3],dis[1][2]+dis[1][3]))); 有3种组合方法,取一个最小值就是答案,2.然后就是路径会相交在一个点上面,我们先统计每个联通块的点到这个点的最小路径,然后所有路径就是a原创 2020-11-03 18:49:51 · 78 阅读 · 0 评论 -
拦截WL
因为n<=200,所以O(n^3)也能AC,所以我们可以直接暴枚可以通往的点。1.先是判断起始点到这个点是不是联通的(bfs/dfs),如果不联通就可以直接输出No2.然后再暴力枚举出每个点k,对于每个点k,我们再判断一次能不能联通, 再搜索的时候判断不能进过点k,如果这样还是联通的话,那么就必然存在另外一条路径通往,所以不可以在k点拦击3.输出K点#include<bits/stdc++.h>#define maxn 250 using namespace std;i..原创 2020-11-03 18:06:54 · 250 阅读 · 0 评论 -
魔兽世界
思路:只要加传送门条件就行。#include<iostream>#include<algorithm>#include<queue>#define WF W.front()#define XF X.front()#define YF Y.front()using namespace std;int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};int n,m,t;int doorx[3][27],doory[3][27];cha转载 2020-10-24 16:26:48 · 142 阅读 · 0 评论 -
流星雨
题目Q:看到题目可能会疑惑变砸变跑怎么实现呢?A:所以我们要在bfs之前初始化好,陨石砸下来的位置,然后从起始点进行bfsQ:怎么进行bfs呢?A:从起始点开始向四周便利,然后在开始统计的数组中这个时候土地还是完好的那么考虑移动,如果这个点一直不会被砸到,那么就可以输出答案了123456789101112131415161718192021222324252627282930313233343536373839404原创 2020-10-23 13:20:23 · 119 阅读 · 0 评论 -
分子团&&Programming Robots
两个都是一类,bfs灌输题就是求有几个二维的联通块,当然dfs和并查集也可以完成1.分子团,就是对于!0的地方进行灌水2.Programming Robots,每个不是#的地方进行灌水,然后统计每个联通块里面有几个Rinline void bfs(int x,int y){ ans=0; node st;st.x=x;st.y=y; vis[st.x][st.y]=1; q.push(st); while(!q.empty()) {原创 2020-10-23 13:04:12 · 177 阅读 · 0 评论 -
紧急援救&&校园迷宫&&入门
紧急援救通过使用一张地图帮助研究所确定从研究所出发找到 Mike 博士最短距离。普通bfs模板#include<bits/stdc++.h>#define maxn 1010using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();} while(isdigit(ch)){原创 2020-10-23 12:48:32 · 227 阅读 · 0 评论