ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

挑战程序设计竞赛 第十二章 图

2021-04-10 15:01:17  阅读:164  来源: 互联网

标签:竞赛 int tt 第十二章 dfs cin color 搜索 程序设计


图的搜索 :

DFS(深度优先搜索)
BFS(广度优先搜索)
这两种算法对有向图无向图都适用
BFS常用作求最短路径的算法

图的表示

分为邻接表,邻接矩阵两种方法

DFS(12.3)

用递归实现深度优先搜索

#include<iostream>

using namespace std;

const int N = 100;

int m[N][N];
int color[N] , d[N],f[N],tt=0;
int n;

void dfs_v(int u){
	int v;
	color[u] = 1;		//标记为正在走此点
	d[u] = ++tt;
	for(v=1;v<=n;v++){
		if(m[u][v] == 0)	continue;
		if(color[v] == 0){		//如果v点没有走过,进行递归遍历
			dfs_v(v);
		}
	}
	color[u] = 2;				// 2代表此点已经走完
	f[u] = ++tt;

}
void dfs()
{
	int i,u;
	for(i=1;i<=n;i++)	color[i] = 0; //全部初始化为没走过
	for(i=1;i<=n;i++){
		if(color[i] == 0){				//依次进行dfs
			dfs_v(i);			
		}
	}
	for(i=1;i<=n;i++){
		cout << i <<" "<< d[i] <<" " <<f[i] <<endl;
	}

}
int main()
{
	int u,v,k,i,j;
	cin >> n;
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++)	
			m[i][j] = 0;	//全部初始化为0
	}

	for(i=0;i<n;i++){
		cin >> u >>k;
		for(j=0;j<k;j++){
			cin >> v;
			m[u][v] = 1;			//初始化为1
		}
	}

	dfs();
	return 0;
	
}

标签:竞赛,int,tt,第十二章,dfs,cin,color,搜索,程序设计
来源: https://blog.csdn.net/qq_53093620/article/details/115574742

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有