深度优先算法:选择一个点依次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