• 有向图 获取回路转


    import java.util.ArrayList;

    public class TESTHUAN {
    static private int[] visited = { 0, 0, 0, 0, 0, 0, 0 };// 7个节点,0为未访问
    static private int[][] e = { 
    { 0, 1, 1, 0, 0, 0, 0 }, 
    { 0, 0, 1, 1, 0, 0, 0 }, 
    { 1, 0, 0, 0, 0, 1, 0 }, 
    { 0, 0, 0, 0, 1, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0, 1 }, 
    { 1, 0, 0, 0, 0, 0, 0 } 
    };// 邻接矩阵,值大家任意改.
    static ArrayList trace = new ArrayList();// 从出发节点到当前节点的轨迹
    static boolean hasCycle = false;

    public static void main(String[] args) {
    findCycle(0);
    if (!hasCycle)
    System.out.println("No Cycle.");
    }

    static void findCycle(int v) // 递归DFS
    {
    if (visited[v] == 1) {
    int j;
    if ((j = trace.indexOf(v)) != -1) {
    hasCycle = true;
    System.out.print("Cycle:");
    while (j < trace.size()) {
    System.out.print(trace.get(j) + " ");
    j++;
    }
    System.out.print(" ");
    return;
    }
    return;
    }
    visited[v] = 1;
    trace.add(v);
    for (int i = 0; i < 7; i++) {
    if (e[v][i] == 1)
    findCycle(i);
    }
    trace.remove(trace.size() - 1);
    }
    }
  • 相关阅读:
    鸡哥的限币令(有上下限的网络流/费用流问题)
    AtCoder Regular Contest 128 部分题题解
    一道题
    2021CCPC河南省赛
    10.26训练赛
    博弈论和SG函数
    10.24训练赛
    10.22训练赛
    CF #749
    atcoder ABC233
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254228.html
Copyright © 2020-2023  润新知