package DFS;
import java.util.Scanner;
public class DFS {
public static boolean visited[] = new boolean[20];//访问标识,数量大于等于最大顶点数
//创建图
public static int[][] createGraph(int n,int v) {
int i,j,w;//边及权值
Scanner scan=new Scanner(System.in);
int Graph[][]=new int[n][n];
for(i=0;i<n;i++)//初始化图
for(j=0;j<n;j++) {
Graph[i][j]=0;
}
System.out.println("请输入边:");
for(int t=0;t<v;t++){
i=scan.nextInt();
j=scan.nextInt();
w=scan.nextInt();
Graph[i][j]=w;
Graph[j][i]=w;
}
return Graph;
}
//打印图
public static void printGraph(int[][] Graph, int n,int v) {
for(int i=0;i<n;i++)//初始化图
{
for(int j=0;j<n;j++) {
System.out.print(Graph[i][j]+"\t");
}
System.out.println();}
}
public static void DFS(int[][] Graph,int n,int i){
int j;
visited[i]=true;
System.out.print("顶点"+i+"\t");
for(j=0;j<n;j++){
if(Graph[i][j]!=0&&visited[j]==false){
DFS(Graph,n,j);
}
}
}
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入顶点数:");
int n=scan.nextInt();
System.out.println("请输入边数:");
int v=scan.nextInt();
int[][] data=new int[n][n];
data=createGraph(n,v);
printGraph(data,n,v);
DFS(data,n,2);
}
}
请输入顶点数:
5
请输入边数:
6
请输入边:
0 4 6
1 0 9
1 2 3
2 0 2
2 3 5
3 4 1
0 9 2 0 6
9 0 3 0 0
2 3 0 5 0
0 0 5 0 1
6 0 0 1 0
顶点2 顶点0 顶点1 顶点4 顶点3