模板 图的遍历 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 无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等. 无向图主要包括双方面内容,图的遍历和寻找联通分量. 一.无向图的遍历 ...
随机推荐
- 用vue前后端分离项目开发记录
一:软件安装 1.1 检测node 是否安装 1.2 安装淘宝镜像 cnpm 1.3 安装vue-cli 1.4 检查是否安装vue-cli脚手架成功 1.5安装webpack 模块管理工具 二:创建 ...
- ★itext-为pdf文件添加页眉页脚 | 3步完成 |
由于上一篇自定义生成pdf的功能需求又增加了,需要加上页码.所以本博客诞生了~ 1. 通过继承PdfPageEventHelper类,实现需要实现的方法 import com.lowagie.text ...
- 原始套接字-自定义IP首部和TCP首部
/* ===================================================================================== * * Filenam ...
- vue-cli构建项目使用 less
在vue-cli中构建的项目是可以使用less的,但是查看package.json可以发现,并没有less相关的插件,所以我们需要自行安装. 第一步:安装 npm install less less- ...
- 20155303 2016-2017-2 《Java程序设计》第六周学习总结
20155303 2016-2017-2 <Java程序设计>第六周学习总结 课堂笔记 高效学习法推荐 看视频学习(2h)→ 以代码为中心看课本,思考运行结果并验证(3h)→ 课后作业验证 ...
- 第8月第16天 django pil
1. https://github.com/chaonet/forum/ sudo easy_install --find-links http://www.pythonware.com/produ ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- 在一台win10上启动多个mysql
1.因为项目需要用一个已经有数据的mysql,而我之前已经安装了一个mysql(之前的mysql上面也是有东西,不想删除) 想办法.... mysqld.exe --defaults-file=D: ...
- o(1), o(n), o(logn), o(nlogn)算法复杂度
在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示.不仅仅用于表示时间复杂 ...
- 操作系统环境变量LANG和NLS_LANG的关系
=Native Language Support本地语言支持 NLS ORACLE11g-ORA-12705: Cannot access NLS data files or invalid envi ...