Java 基于邻接矩阵的简单连通图

Java 基于邻接矩阵的简单连通图,java,graph,adjacency-matrix,Java,Graph,Adjacency Matrix,我正试图制作一个程序,用邻接矩阵判断一个图是否是单连通的。我成功地编写了代码,告诉我所有节点都有指向某个对象的链接,但这并不能保证在第一个节点和最后一个节点(简单连通图的定义)之间存在某种方式。我是一个初学者,所以我不知道这类问题是否可以发布在这里。你知道我该怎么做吗?这是到目前为止我的代码。如有任何建议,我们将不胜感激 package lab41; import java.util.Scanner; public class Graf { public static void m

我正试图制作一个程序,用邻接矩阵判断一个图是否是单连通的。我成功地编写了代码,告诉我所有节点都有指向某个对象的链接,但这并不能保证在第一个节点和最后一个节点(简单连通图的定义)之间存在某种方式。我是一个初学者,所以我不知道这类问题是否可以发布在这里。你知道我该怎么做吗?这是到目前为止我的代码。如有任何建议,我们将不胜感激

package lab41;

import java.util.Scanner;

public class Graf {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Introduceti nr de noduri:");
        int n = s.nextInt();
        int[][] a = new int[n + 1][n + 1];
        int i, j, k;
        System.out.println("Introduceti matricea adiacenta:");

        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++) {
                System.out.println("a[" + i + "][" + j + "]=");
                a[i][j] = s.nextInt();
            }

        int x = 0;
        j = 1;
        i = 1;
        do {
            if (a[i][j] == 1) {
                i++;
                j = 1;
                x++;
            } else
                j++;

        }
        while (i < n && j <= n);

        if (x == n - 1)
            System.out.println("Graful este conex");
        else
            System.out.println("Graful nu este conex");
    }


}
lab41包装;
导入java.util.Scanner;
公共类Graf{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
System.out.println(“noduri简介”);
int n=s.nextInt();
int[][]a=新int[n+1][n+1];
int i,j,k;
System.out.println(“简介矩阵中心:”);

对于(i=1;i要查找图是否连接,可以从任何节点开始执行DFS&BFS,如果访问了所有节点,则表示图已连接

算法:

  • 分配一个列表,visitedNodes={},和一个队列={}
  • 选择任意节点,例如节点0
  • 从节点0启动BFS。队列={Node 0}
  • 弹出队列的头部,假设节点是x。如果节点x在visitedNodes中,请转至步骤3。否则,将x放入visitedNodes列表
  • 访问节点x的所有邻居,并将它们放入队列中
  • 继续步骤3至5,直到队列为空