最短路径(java)

1.FLOYD

import java.util.Scanner;

class G{
    int n;
    int[][] g=new int[100][100];
        
    void FLOYD(G g) {
        int i,j,k;
        for(k=0;k<g.n;k++) {
            for(i=0;i<g.n;i++) {
                for(j=0;j<g.n;j++) {
                    g.g[i][j]=Math.min(g.g[i][j],g.g[i][k]+g.g[k][j]);
                }
            }
        }
    }//弗洛伊德算法
}

2.迪杰斯特拉算法

void Dijskra(int v0,int d[]) {
        int i,j,r,v;
        int[] visit=new int[100];
        
        for(i=0;i<n;i++)d[i]=g[v0][i];
        v=visit[v0]=1;
        
        for(i=0;i<n-1;i++) {
            r=9999999;
            for(j=0;j<n;j++) {
                if(visit[j]==0&&r>d[j]){
                    r=d[j];
                    v=j;
                }
            }
            visit[v]=1;
            for(j=0;j<n;j++) d[j]=Math.min(d[j],r+g[v][j]);
        }
    }
posted @ 2021-03-01 21:22  金龙喩  阅读(99)  评论(0编辑  收藏  举报