ICode9

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

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

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

标签:竞赛 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

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

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

ICode9版权所有