Traverse the following graph by DFS. You should create the graph by matrix.
输入格式:
1 line.
A number which means the start vertex of traverse.
输出格式:
1 line.
A sequence seperated by comma which means the vertexes traversed by DFS.
输入样例:
在这里给出一组输入。例如:
1
输出样例:
在这里给出相应的输出。例如:
1,2,4,8,5,6,3,7,
C语言代码:
#include<stdio.h>
#include<stdlib.h>
#define VerticeNum 8
int flag[VerticeNum];
void DFS(int start, int Graph[VerticeNum][VerticeNum]){
int i;
for(i=0;i<VerticeNum;i++){
if((!flag[i])&&Graph[start][i]){
flag[i]=1;
printf("%d,",i+1);
DFS(i,Graph);
}
}
}
main(){
int Graph[VerticeNum][VerticeNum];
int i,j;
for(i=0;i<VerticeNum;i++){
for(j=0;j<VerticeNum;j++){
Graph[i][j]=0;
}
flag[i]=0;
}
Graph[0][1]=Graph[1][0]=1;
Graph[0][2]=Graph[2][0]=1;
Graph[1][3]=Graph[3][1]=1;
Graph[1][4]=Graph[4][1]=1;
Graph[3][7]=Graph[7][3]=1;
Graph[4][7]=Graph[7][4]=1;
Graph[2][5]=Graph[5][2]=1;
Graph[6][2]=Graph[2][6]=1;
Graph[5][7]=Graph[7][5]=1;
Graph[6][7]=Graph[7][6]=1;
int start;
scanf("%d",&start);
printf("%d,",start);
flag[start-1]=1;
DFS(start-1,Graph);
return 0;
}