bellman-ford -------解决负权边
dijkstra算法不能解决带有负权边的图
而bellman-ford可以解决这个问题,并且在思想上和代码上都非常完美
public static void main(String[] args) { int n = 5; int u[] = {0, 2, 1, 1, 4, 3}; int v[] = {0, 3, 2, 5, 5, 4}; int w[] = {0, 2, -3, 5, 2, 3}; int dis[] = new int[u.length]; for (int i = 1; i < dis.length; i++) { dis[i] = 99; } dis[1] = 0;//点1到点1的距离肯定是0.这里必须初始化。 for (int k = 1; k <= n - 1; n++) // for (int i = 1; i <= 5; i++) if (dis[v[i]] > dis[u[i]] + w[i]) dis[v[i]] = dis[u[i]] + w[i]; for (int i = 1; i < dis.length; i++) { System.out.println(dis[i]); } }
没有虚过一天,真好