深度优先搜索:递归实现方向:
#include <stdio.h>
#include <string.h>
const int GNumber = 8;
int G[GNumber][GNumber];
int visit[GNumber];
void DFS_Visit(int G[][GNumber], int i, int n)
{
int j;
visit[i] = 1;
for(j = 0; j < n; j++)
{
if(G[i][j] && !visit[j])
{
printf(" V%d ", j + 1);
visit[j] = 1;
DFS_Visit(G, j, n);
}
}
}
//防止出现未联通图
void DFS(int G[][GNumber], int n)
{
int i;
memset(visit, 0, sizeof(visit));
for(i = 0; i < n; i++)
{
if(!visit[i])
{
printf(" V%d ", i + 1);
DFS_Visit(G, i, n);
printf("\n");
}
}
}
int main()
{
FILE *fr;
int i,j;
fr = fopen("dfs.txt","r");
if(!fr)
{
printf("fopen failed\n");
return -1;
}
while(fscanf(fr,"%d%d", &i, &j) != EOF)
{
G[i-1][j-1] = 1;
G[j-1][i-1] = 1;
}
DFS(G,GNumber);
getchar();
return 0;
}