图的深度优先遍历和广度优先遍历
来源:互联网 发布:人工智能 医疗机器人 编辑:程序博客网 时间:2024/05/23 11:05
<pre name="code" class="cpp">//DFS和BFS实际来源于图的深度优先遍历和图的广度优先遍历//并且得到了很多功能延伸//图的深度优先遍历#include <stdio.h>#include <stdlib.h>#define INF 1000000int map[101][101];//存图int book[101];//标记int n;//点的个数int m;//边的个数int sum=0;//已遍历的点的个数void dfs(int cur)//当前所在的顶点编号{ printf("%d\n",cur); sum++; if(sum==n) return; for(int i=1;i<=n;i++){ if(map[cur][i]==1&&book[i]==0){ book[i]=1; dfs(i); } } return;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(i==j) map[i][j]=0; else map[i][j]=INF; } int a,b;//边的顶点 for(int i=1;i<=m;i++){//读边 scanf("%d%d",&a,&b); map[a][b]=1; map[b][a]=1; } memset(book,0,sizeof(book)); book[1]=1; dfs(1); return 0;}
//图的广度优先遍历#include <stdio.h>#include <stdlib.h>#define INF 100000int map[101][101];int book[100];int queue[100];int head=0;int tail=0;int n,m;int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(i==j) map[i][j]=0; else map[i][j]=INF; } int a,b; for(int i=1;i<=m;i++){ scanf("%d%d",&a,&b); map[a][b]=map[b][a]=1; } queue[tail++]=1; book[1]=1; while(head<tail&&tail<=n){ int cur=queue[head]; for(int i=1;i<=n;i++){ if(map[cur][i]==1&&book[i]==0){ book[i]=1; queue[tail++]=i; } } if(tail==n) break; head++; } for(int i=0;i<tail;i++) printf("%d ",queue[i]); return 0;}
1 0
- 图的遍历:深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历算法
- 图的深度优先遍历和广度优先遍历实现
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的广度优先遍历和深度优先遍历
- 图的深度优先遍历和广度优先遍历
- 邻接图的广度优先遍历和深度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的建立、广度优先遍历和深度优先遍历
- 数据结构---图的广度优先遍历和深度优先遍历
- 图的深度优先遍历和广度优先遍历
- Nginx安装手册
- 《放牛班的春天》影评
- 逻辑思维-高手是怎样炼成的
- csdn博客中动态动画的创建,mac版本的实现步骤
- 总结笔记一。
- 图的深度优先遍历和广度优先遍历
- 所有的正整数排在所有负数前面
- 数组指针和指针数组
- Python集合
- 总结16
- C++成员指针 int A::*
- C函数指针应用之回调函数
- 面试遇到的问题 进程和线程以及通信方式
- VB.NET Socket5代理客户端链接 LHSocket5 Server源码