java - 如何在具有迭代dfs的图中找到桥梁?

标签 java algorithm graph depth-first-search

我需要在一个迭代dfs的图中找到桥
代码是递归的,我不知道如何将其转换为迭代dfs

void bridgeUtil(int u, boolean visited[], int disc[], int low[], int parent[])
{

    visited[u] = true;

    disc[u] = low[u] = ++time;

    Iterator<Integer> i = adj_sub[u].iterator();
    while (i.hasNext())
    {
        int v = i.next();

        if (!visited[v])
        {
            parent[v] = u;
            bridgeUtil(v, visited, disc, low, parent);

            low[u]  = Math.min(low[u], low[v]);

            if (low[v] > disc[u]) {
                System.out.print(u);
                System.out.print(" ");
                System.out.println(v);
            }
        }
        else if (v != parent[u]) {
            low[u] = Math.min(low[u], disc[v]);
        }
    }

}
void bridge()
{
    boolean visited[] = new boolean[V];
    int disc[] = new int[V];
    int low[] = new int[V];
    int parent[] = new int[V];


    for (int i = 0; i < V; i++)
    {
        parent[i] = NIL;
        visited[i] = false;
    }
    for (int i = 0; i < V; i++)
        if (visited[i] == false) {
            bridgeUtil(i, visited, disc, low, parent);
            //DFS_sub(i, visited, disc, low, parent);
        }

}

最佳答案

以下是您的cs 251项目的解决方案https://youtu.be/dQw4w9WgXcQ

关于java - 如何在具有迭代dfs的图中找到桥梁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784200/

相关文章:

algorithm - 在无向图中查找所有无弦循环

python - 填充表面网格的算法

c# - 创建一个 "over time"算法

algorithm - 打印从根到叶子的 n 叉树的所有路径

java - 无论 Spring 数据源 URL 是在哪里指定的,如何读取它的值?

python - 字符串列表中的公共(public)子字符串

javascript - 使用 PHP 和 JavaScript 从心跳列表构建正常运行时间图

java - 在 GAE 开发服务器上模拟?

java - 多次调用时与 Cordova.exec 相关的查询

java - 设置准备好的语句参数时出现 NullPointerException