
----bfs
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1366 贫富差距
先用并查集判断所有节点是否在同一集合内。如果不是,输出-1。 然后求图中最远两点的距离即可。 #include using namespace std; const int N=55; int n,fa[N],vis[N]; char mz[N][N]; int findfa(int x) { return fa[x]==x?x:fa[x]=findfa(fa[x]); } int b原创 2016-11-10 20:30:17 · 294 阅读 · 0 评论 -
51nod 1109 01组成的N的倍数
BFS #include using namespace std; const int MAXN=1000100; int dis[MAXN],pre[MAXN]; char ans[MAXN]; int main() { int n,i,now,cnt,nxt; while(scanf("%d",&n)!=EOF) { memset(dis,-1,sizeof(dis));原创 2016-11-17 15:30:46 · 287 阅读 · 0 评论 -
51nod 1535 深海探险
BFS跑一下就好了,判断下是否只有一个环。 需要注意的是,还需判断是否有孤立点的存在。#include using namespace std; void read(long long &a){ char ch;while(!((ch=getchar())>='0')&&(ch<='9')); a=ch-'0';while(((ch=getchar())>='0')&&(ch<原创 2017-02-07 14:44:58 · 264 阅读 · 0 评论 -
51nod 1444 破坏道路
BFS计算任意两点间的距离,N方枚举重合路径的两端。 #include using namespace std; const int MAXN=3030; struct node { int x,step; }now,son; vector vec[MAXN]; int mp[MAXN][MAXN]; void bfs(int x) { queue q; now.x=x; now原创 2017-07-07 14:37:09 · 304 阅读 · 0 评论 -
牛客OI周赛8-提高组 A 用水填坑
95%的分很好拿,只要对每一个高度都跑一遍dfs/bfs就行了,但最后5%的分有难度。 首先我们可以知道,最外面一圈的高度和蓄水量,是固定的。我们可以考虑从外圈向内圈进行反向搜索操作。 用一个堆/优先队列作为搜索队列,维护已确定蓄水量的单元格中,高度+蓄水量最小的单元格。 每次取出堆顶元素,其周围的单元格高度为。 如果,必定可以将这个单元格填补到高度,总蓄水量增加,。 如果,那说明这个单...原创 2019-04-18 18:30:04 · 238 阅读 · 0 评论