模板 图的遍历 bfs+dfs 图的最短路径 Floyed+Dijkstra
广搜 bfs
//bfs #include<iostream>
#include<cstdio>
using namespace std;
int queue[],top=,end=;
int map[][];
int vis[];
int n,m;
void bfs(int p)
{
queue[end]=p;
vis[p]=;
printf("%c -->",queue[end]+);
while(top!=end)
{
top++;
int k=queue[top];
for(int i=;i<=n;i++)
{ if(vis[i]==&&map[k][i]==)
{
printf("%c-->",i+);
queue[++end]=i;
vis[i]=;
}
}
}
}
int main()
{
char head,tail;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
cin>>head>>tail;
head=head-;
tail=tail-;
map[head][tail]=map[tail][head]=;
}
bfs();
return ;
}
深搜 dfs
#include<iostream>
#include<cstdio>
using namespace std;
char maps[][];
bool vis[];
int q,m;
void dfs(int a){
vis[a]=;
if(a<q)
printf("%c --> ",a+);
else printf("%c",a+);
for(int i=;i<=q;i++)
{
if(maps[a][i]==&&vis[i]==)
dfs(i);
}
}
int main()
{ char a,b;
cin>>q>>m;
for(int i=;i<=m;i++)
{
cin>>a>>b;
maps[a-][b-]=;
maps[b-][a-]=;
}
dfs();
}
Floyed
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int maps[][];
int ans;
int main()
{
memset(maps,,sizeof(maps));
int n,m;
cin>>n>>m;
int he,ta,len;
for(int i=;i<=m;i++)
{
cin>>he>>ta>>len;
maps[ta][he]=maps[he][ta]=len;
}
int x,y;
cin>>x>>y;
for(int k = ;k <= n;k++)
for(int i = ;i <= n;i++)
for(int j = ;j <= n;j++)
{
if(maps[i][j]>maps[i][k]+maps[k][j])
maps[i][j]=maps[i][k]+maps[k][j];
} printf("%d",maps[x][y]);
}
Dijkstra
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
const int maxn=;
int map[][],start,end;
bool vis[];
int dis[],road[],minn,k; void add(int now)
{
for(int i=;i<=n;i++)
{
dis[i]=map[now][i];
}
vis[now]=true;
dis[now]=;
for(int i=;i<=n-;i++)
{
minn=maxn;
k=now;
for(int j=;j<=n;j++)
if(vis[j]==false&&dis[j]<minn)
{
minn=dis[j];
k=j;
}
vis[k]=true;
for(int g=;g<=n;g++)
if(vis[g]==false&&dis[g]>dis[k]+map[k][g])
{
dis[g]=dis[k]+map[k][g];
}
}
printf("%d",dis[end]);
return ; }
int main()
{
memset(map,maxn,sizeof(map));
memset(vis,false,sizeof(vis));
scanf("%d%d",&n,&m);
int he,ta,len;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&he,&ta,&len);
map[ta][he]=map[he][ta]=len;
}
memset(dis,maxn,sizeof(dis));
cin>>start>>end;
add(start);
return ;
}
模板 图的遍历 bfs+dfs 图的最短路径 Floyed+Dijkstra的更多相关文章
- 图的遍历BFS广度优先搜索
图的遍历BFS广度优先搜索 1. 简介 BFS(Breadth First Search,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点"死磕到底"的思维不同,广度优先 ...
- 7.9模拟赛T1图的遍历(dfs)
图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...
- 图的遍历BFS
图的遍历BFS 广度优先遍历 深度优先遍历 可以进行标记 树的广度优先遍历,我们用了辅助的队列 bool visited[MAX_VERTEX_NUM] //访问标记数组 //广度优先遍历 void ...
- 图的创建和遍历(BFS/DFS)
图的表示方法主要有邻接矩阵和邻接表.其中邻接表最为常用,因此这里便以邻接表为例介绍一下图的创建及遍历方法. 创建图用到的结构有两种:顶点及弧 struct ArcNode { int vertexIn ...
- 图的遍历:DFS和BFS
图的遍历一般由两者方式:深度优先搜索(DFS),广度优先搜索(BFS),深度优先就是先访问完最深层次的数据元素,而BFS其实就是层次遍历,每一层每一层的遍历. 1.深度优先搜索(DFS) 我一贯习惯有 ...
- 数据结构(三十二)图的遍历(DFS、BFS)
图的遍历和树的遍历类似.图的遍历是指从图中的某个顶点出发,对图中的所有顶点访问且仅访问一次的过程.通常有两种遍历次序方案:深度优先遍历和广度优先遍历. 一.深度优先遍历 深度优先遍历(Depth_Fi ...
- Kruskal和prime算法的类实现,图的遍历BFS算法。
一.图的遍历 #include<iostream> #include<queue> #include<vector> using namespace std; in ...
- 图的遍历——BFS
原创 裸一篇图的BFS遍历,直接来图: 简单介绍一下BFS遍历的过程: 以上图为例子,从0开始遍历,访问0,按大小顺序访问与0相邻的所有顶点,即先访问1,再访问2: 至此顶点0已经没有作用了,因为其本 ...
- 算法导论—无向图的遍历(BFS+DFS,MATLAB)
华电北风吹 天津大学认知计算与应用重点实验室 最后改动日期:2015/8/22 无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等. 无向图主要包括双方面内容,图的遍历和寻找联通分量. 一.无向图的遍历 ...
随机推荐
- webpack进阶--打包
上一片博文主要让大家了解下究竟webpack是干什么的,明显它是专注于打包的. gulp 和 webpack 的区别 gulp,要求我们一步步写task(es6编译.css压缩.图片压缩.打包. ...
- springmvc常用注解标签详解-推荐
1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...
- [转载]TypeScript 入门指南
之前有听过,但未使用过,而最近在用nodejs,angularjs做一些前端项目,想到了这个来,正是学习TypeScript的时候,看介绍貌似和coffeescript相似,也JavaScript的转 ...
- ASP.NET自定义服务器控件
本文通过创建一个最简单的服务器控件,演示开发服务器端控件的流程. 文章内容整理自MSDN的编程指南,原文地址在文章末尾的资源中. 本文创建一个简单的服务器控件,名为 RedLabel. 它的使用方式为 ...
- 滚动视差插件skrollr.js
东西虽好,但也不能懒到自己一点都不去做总结,那么下方将会写出从网上找到,比较好的网址(应该是根据官网翻译的). 自己先做一个总结:这个插件兼容上做到了降级处理,虽然低端浏览器没有那么顺畅的效果,但是勉 ...
- CSS3 响应式布局: @media (min/max-width:***) @font-face
响应式布局 responsive design @media 属性 bootstrap css 分析: @media (min-width:768px){ body{***} } use @medi ...
- HTTP 错误 404.0 - Not Found
当网上的那些修改程序池的方法,无法解决此问题时,可以尝试修改以下的参数: 1.控制面板-->程序-->启用或关闭Windows功能--> Internet Information S ...
- 利用C&C漏洞来查看恶意软件Dridex的操作流程
利用C&C漏洞来查看恶意软件Dridex的操作流程 据了解,安全研究人员已经获取到了银行恶意软件Dridex的C&C的访问权限了.这也就意味着,安全研究人员可以了解到网络犯罪分子到底窃 ...
- Java多线程学习(八)线程池与Executor 框架
目录 历史优质文章推荐: 目录: 一 使用线程池的好处 二 Executor 框架 2.1 简介 2.2 Executor 框架结构(主要由三大部分组成) 2.3 Executor 框架的使用示意图 ...
- 六、vue路由Vue Router
一.基本概念 route, routes, router 1, route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮 => home内容, 这是一条route, a ...