无向图 邻接矩阵dfs(最简单)

  出处LINK  

改写:去除sum变量;新增结点6,实现遍历全图的算法

输出:索引值

 1 #include <iostream>
 2 #include <climits>
 3 using namespace std;
 4 #define MAX 10
 5
 6 int mat[MAX][MAX];
 7 int visited[MAX];
 8 int n=6;
 9
10 void dfs(int row){
11     cout<<row<<‘\t‘;
12     visited[row]=1;
13     for(int i=0; i<n; i++)
14     {
15         if(mat[row][i]==1 && !visited[i]){
16             dfs(i);
17         }
18     }
19     return;
20 }
21
22 void travelallnodes()
23 {
24     cout<<"travel all nodes :"<<endl;
25     int partnum=1;
26     for(int i=0; i<n; i++){
27         if(!visited[i]){
28             cout<<"part "<<partnum++<<" :"<<endl;
29             dfs(i);
30             cout<<endl<<endl;
31         }
32     }
33     cout<<"---travel all nodes over !"<<endl;
34 }
35
36 void init(){
37     for(int i=0; i<n; i++)
38         visited[i]=0;
39     for(int i=0; i<n; i++)
40         for(int j=0; j<n; j++)
41             mat[i][j]=INT_MAX;
42     mat[0][1]=1,mat[0][2]=1,mat[0][4]=1;
43     mat[1][0]=1,mat[1][3]=1;
44     mat[2][0]=1,mat[2][4]=1;
45     mat[3][1]=1;
46     mat[4][0]=1,mat[4][2]=1;
47     for(int i=0; i<n; i++)
48         mat[i][i]=0;
49 }
50
51 int main()
52 {
53     init();
54     travelallnodes();
55
56     dfs(5);
57     return 0;
58 }

原文地址:https://www.cnblogs.com/guoyujiang/p/11967196.html

时间: 2024-11-09 04:52:30

无向图 邻接矩阵dfs(最简单)的相关文章

无向图 邻接矩阵bfs 最简单

上图: 参考上一篇 上码: #include <iostream> #include <climits> #include <queue> using namespace std; #define MAX 10 int mat[MAX][MAX]; int visited[MAX]; int n=6; void bfs(int pos) { cout<<"bfs from "<<pos<<" :"

hdu 1312 DFS算法简单题

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 此题与油田那题很像是练习深搜的好题,题意是从"@"开始,遍历整个图,找到连接的 "."有多少个 但要考虑变化,简单处理下就行了,主要是斜角的不要了,而且判断结束方式也不一样 具体看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

无向图邻接矩阵和关联矩阵转换

%% 无向图邻接矩阵和关联矩阵转换function w = incandadf(F,f)%F为输入无向图矩阵可以是邻接矩阵或关联矩阵%% 邻接矩阵转关联矩阵if f == 0 m = sum(sum(F))/2; n = size(F,1); w = zeros(n,m); k = 1; for i = 1:n for j =1 : n if F(i,j) ~= 0 w(i,k) = 1; w(j,k) = 1; k = k + 1; end end end%% 关联矩阵 阵转邻接矩else i

朴素搜索dfs, 简单的剪枝搜索

为做一个项目选择最合适的语言固然重要,但是,掌握一门自己熟练的兵器,也很重要. ===================================================================================================================== 继续总结搜索类的题目,这一类的题目,目前仅分析简单粗暴的dfs搜索,以及简单的剪枝. 参考的题目: http://acm.hdu.edu.cn/showproblem.php?pid=

邻接矩阵DFS,BFS代码实现

// 邻接矩阵的深度和广度优先遍历 #include <stdio.h> #define OK 1 // 执行成功 #define ERROR 0 // 执行失败 #define TRUE 1 // 返回值为真 #define FALSE 0 // 返回值为假 typedef int Status; // 执行状态(OK.ERROR) typedef int Boolean; // 布尔值(TRUE.FALSE) typedef char VertexType; // 顶点元素类型 typed

hdu 1181 变形课 (dfs)简单搜索

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1181 变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 17876    Accepted Submission(s): 6435 Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不

Leetcode题目104.二叉树的最大深度(DFS+BFS简单)

题目描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 . 思路分析:递归(二叉树最大深度,等于左右子树的最大深度+1) 代码实现: 一.深度优先比遍历(DFS) /** * Definition for a binary tree node. * public class TreeNo

Leetcode题解 - 树、DFS部分简单题目代码+思路(700、671、653、965、547、473、46)

700. 二叉搜索树中的搜索 - 树 给定二叉搜索树(BST)的根节点和一个值. 你需要在BST中找到节点值等于给定值的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 NULL. 思路: 二叉搜索树的特点为左比根小,右比根大.那么目标结点就有三种可能: 1. 和根一样大,那么直接返回根即可. 2. 比根的值小,那么应该再去次左子树中搜索. 3. 比根的值大,那么应该再次去右子树中搜索. 可以看到这就是一个递归的思路. class Solution: def searchBST(self

PAT1013. Battle Over Cities(邻接矩阵、邻接表分别dfs)

//采用不同的图存储结构结构邻接矩阵.邻接表分别dfs,我想我是寂寞了吧,应该试试并查集,看见可以用并查集的就用dfs,bfs代替......怕了并查集了 //邻接矩阵dfs #include<cstdio>#include<algorithm>using namespace std;const int maxn=1001;int g[maxn][maxn];int n,tmp;bool vis[maxn];void dfs(int v){ vis[v]=true; for(int