博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
和小哥哥一起刷洛谷(4) 图论之广度优先搜索BFS
阅读量:5908 次
发布时间:2019-06-19

本文共 1282 字,大约阅读时间需要 4 分钟。

关于bfs:

你怎么会连这个都不知道!!!自己好好谷歌一下!!!(其实我也刚学)

bfs伪代码:

while(队列非空){    取出队首元素u;    弹出队首元素;    u染色为黑色;    for(int i=0;i

可爱的分割线


无权最短路

显然,你在洛谷上是搜不到这题的,因为这是我们学校团队的题。所以还是找个小板凳专心听我讲吧。

题目描述:

给定无权无向图G(V,E)和源点s/终点t,求 s->t 的最短路径。

假设读入边的列表是有(字典)序的(既邻接表就是有序的)。

输入输出格式:

输入格式:

第一行包含4个整数N、M、s、t,表示该图共有N个结点和M条无向边。(N <= 5000,M <= 200000)。起点为s,终点为t。

接下来M行,每行包含2个整数{u,v},表示有一条无向边连接结点u、v

输出格式:

输出最短路的长度(边数)

若无法到达,输出"No path"

样例:

输入:

4 3 1 41 21 32 4

输出:

2

代码:

#include
#include
#include
#include
#include
#include
const int NR=5005;using namespace std;struct Edge{ //一个存储权值的结构体,为bfs模板,此题无用 int v,w; Edge(int v,int w):v(v),w(w){}};vector
save[5005];//邻接表int d[NR];//记录距离的数组int main(){ int n,m,s,t; cin>>n>>m>>s>>t;//输入 char color[n+1];//判断是否去过(没去过:"w",正在考虑(在队列中):"g",已经完全考虑:"b") memset(color,'w',sizeof(color));//染色数组重置为白色 for(int i=1;i<=m;i++){ int a,b; cin>>a>>b;//输入每条线的起点和终点 save[a].push_back(Edge(b,1));//因为是无向图,所以在起点连接的点中增加终点 save[b].push_back(Edge(a,1));//还要在终点连接的点中增加起点 } d[s]=0;//起点距离起点的距离设为零 queue
q;//bfs处理队列 q.push(s);//起点入队 color[s]='g';//起点染色成灰色 while(!q.empty()){ int u=q.front();//取出队首的一项 q.pop();//弹出 color[u]='b';//标记为黑色 for(int i=0;i

转载于:https://www.cnblogs.com/BlogE/p/luogu_day4.html

你可能感兴趣的文章
JavaScript设计模式与开发实践笔记
查看>>
wx小程序(3) - 自定义组件及参数传输
查看>>
数据请求+
查看>>
Quiz - 回顾
查看>>
如何合理的规划jvm性能调优
查看>>
从地址字符串获取省市区信息
查看>>
莫比乌斯反演初步与实际应用
查看>>
javascript-高级用法
查看>>
409. Longest Palindrome
查看>>
大话javascript 1期:作用域和作用域链
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
eosjs 文档(JSON-RPC)
查看>>
前嗅ForeSpider教程:通过链接列表采集正文数据(翻页)
查看>>
Python 基础起步 (四) 变量是什么东西 ?
查看>>
技术分享:阿里巴巴Dubbo实现的源码分析
查看>>
TiDB 助力东南亚领先电商 Shopee 业务升级
查看>>
神级命令awk之30分钟速成必看
查看>>
聊聊flink的FsCheckpointStreamFactory
查看>>
【进阶1-4期】JavaScript深入之带你走进内存机制
查看>>
[LeetCode] 270. Closest Binary Search Tree Value
查看>>