无环有向图最长路径
来源:互联网 发布:淘宝二手ipad 哪家靠谱 编辑:程序博客网 时间:2024/05/21 21:39
1、把dist 初始为负无穷
2、松弛判断条件改为 dist[v] < dist[u] + w;
import java.util.ArrayList;import java.util.Scanner;import java.util.Stack;import Graph.HasCycle;import javafx.scene.effect.Light.Distant;public class TopDij {static boolean[]visit;static boolean[]onStack;static Stack<Integer> stack;static int n, m;static boolean hasCycle = false;static int[]dis;static int INF = 99999999;static ArrayList<EdgeS> []adj;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();visit = new boolean[n+1];adj = new ArrayList[n+1];stack = new Stack<>();dis = new int[n+1];onStack = new boolean[n+1];for(int i = 1; i <= n; i++ ) {adj[i] = new ArrayList<>();}for(int i = 0; i < m; i++ ) {int from = in.nextInt();int to = in.nextInt();int w = in.nextInt();adj[from].add(new EdgeS(from, to, w));}bfs(1);if(!hasCycle) {shortPath(1);System.out.println(dis[3]);}else {System.out.println("hasCycle");}}public static void shortPath(int s) {for(int i = 1; i <= n; i++ ) {dis[i] = -INF;}dis[s] = 0;while(!stack.isEmpty()) {int cur = stack.pop();for(EdgeS e: adj[cur]) {if(dis[e.to] < dis[cur] + e.w) {dis[e.to] = dis[cur] + e.w;}}}}public static void bfs(int cur) {visit[cur] = true;onStack[cur] = true;for(EdgeS e:adj[cur]) {if(!visit[e.to]) {bfs(e.to);}else if(onStack[e.to]){hasCycle = true;return;}}onStack[cur] = false;stack.push(cur);}}class EdgeS{int from, to, w;public EdgeS(int f, int t, int w) {from = f;to = t;this.w = w;}}
阅读全文
0 0
- 无环有向图最长路径
- 有向图中的最长路径
- 无环有向图的最短路径和最长路径(权重任意)
- 在有向无环图中求最长路径
- ACM 在有向无环图中求最长路径
- 有向图的最长路径及是否存在环路结构
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- HDU 1224 SPFA算法算有向图的最长路径
- 动态规划解——有向图中的最长路径 【转载】
- 图的最长路径
- 图的最长路径
- 有向图 路径
- UVA 11324 有向图强连通分量缩点得SCC图,并在其上求最长路径
- 最长路径
- 最长路径
- 继承、多态:汽车租赁系统
- SQL语句中对基本表的操作(DDL)
- iOS xcode里面鼠标右击菜单栏~翻译(基础)
- 1、TensorFlow 的安装
- 机器学习-线性回归
- 无环有向图最长路径
- 人脸识别之人脸检测(十二)--DDFD算法
- 机房收费系统之用户登录
- 程序人生
- STL之List容器
- 2、TensorFlow 的计算模型、运行模型、数据模型
- 变换矩阵的合并
- 1
- catalog方式的rman备份与恢复示例