DFS一个图并求出它的连通分支个数
来源:互联网 发布:带网络变压器的rj45 编辑:程序博客网 时间:2024/05/17 22:00
深度优先算法:选择一个点依次DFS它所连接的点,并且每个点会有一个visited标记表示是否被遍历。
连通图:如果一个图中任意两点都存在路径连接,那么这个图称为连通图
连通分支大小:遍历这个图里的所有点,有多少次重新选取一个点从它开始DFS这个图就有多少个连通分支
代码:
#include <fstream>#include<iostream>#include<stdlib.h>using namespace std;void visit(int* visited, int num){ visited[num]=1;}void DFS(int ph[][10], int *visited, int num){ visit(visited, num); for(int i=num+1; i<10; i++) { if(ph[num][i]==1) { if(!visited[i]) { visit(visited, i); DFS(ph, visited, i); } } }}int main() //程序从这里开始运行{ int ph[10][10]; int visited[10]={0}; int flag=0; char ch; ifstream OpenFile("tu.txt"); for(int j=0; j<10; j++) { for(int k=0; k<10; k++) { OpenFile.get(ch); ph[j][k] = (int)ch-48; } } cout << "本图邻接矩阵为:" << endl; for(int j=0; j<10; j++) { for(int k=0; k<10; k++) { cout << ph[j][k] << " "; } cout << endl; } for(int j=0; j<10; j++) { if(!visited[j]) { DFS(ph, visited, j); flag++; } } cout << "本图连通分支有 " << flag <<" 个。"; OpenFile.close();}
阅读全文
0 0
- DFS一个图并求出它的连通分支个数
- Kosaraju 算法求解一个有向图的强连通分支个数
- Java求出矩阵表示的有向图所有的强连通分支程序设计过程
- POJ_2553 求出度为0的强连通分支
- 一个图的连通子图个数
- 求出一个数的个位数并丢弃它,用来顺序输出和逆序输出这个数
- (java)DFS求连通分量的个数
- hdu 1198 dfs||并查集求连通分量个数,关键建图
- 写出一个小程序,求出100-200之间的质数的个数并输出这些数
- 连通图的强连通分支
- 图中连通块的个数:并查集
- 并查集找连通分量的个数
- 并查集求连通分量的个数
- 利用邻接矩阵求解无向图的连通分支的个数
- POJ2117_Electricity_求删除割点后最大连通分支的个数_tarjan
- 23.基于 邻接表 dfs 的 求连通分支
- 连通分量个数(dfs)
- 输入一个整数,求出它的所有因子
- java,返回链表中倒数第K个节点
- bzoj4205 卡牌配对
- [母函数]HDU 1085——Holding Bin-Laden Captive!
- 环游四边形 高精度
- 面试经验20170606
- DFS一个图并求出它的连通分支个数
- 一个研究生毕业后的职业规划
- OkHttp之post请求发送给服务器json
- Error:Execution failed for task ':app:mergeDebugResources'问题解决
- UIAlertView_带文本输入框的提示框
- netbeans的编写图形界面操作。
- Linux文件操作
- SimpleAdapter的使用介绍
- 机器算法实战中logistcal回归与SKlearn库算法对比