package workseven;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.Scanner;
public class Dijkstra_String_Source_Shortest_Path {
private static int N;
private static int M;
private static int max;
private static int[] visit;
private static int[][] distance;
private static int[] bestmin;
private static String[] path;
public static void Dijkstra() {
visit[1] = 1;
bestmin[1] = 0;
//大循环
for(int l = 2; l <= N; l++) {
int Dtemp = max;
int k = -1;
//步骤①
for(int i = 2; i <= N; i++) {
if(visit[i] == 0 && distance[1][i] < Dtemp) {
Dtemp = distance[1][i];
k = i;
}
}
visit[k] = 1;
bestmin[k] = Dtemp;
//步骤②
for(int i = 2; i <= N; i++) {
if(visit[i] == 0 && (distance[1][k] + distance[k][i]) < distance[1][i]) {
distance[1][i] = distance[1][k] + distance[k][i];
path[i] = path[k] + "-->" + i;
}
}
}
//输出路径
for(int i=1;i<=N;i++) {
System.out.println("从"+1+"出发到"+i+"的最短路径为:"+path[i]);
}
System.out.println("=====================================");
for(int i = 1; i <= N; i++) {
System.out.println("从1出发到" + i + "点的最短距离为:" + bestmin[i]);
}
}
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.print("请输入节点个数N,路径总数M: ");
N = input.nextInt();
M = input.nextInt();
max = 10000;
bestmin = new int[N+1];
distance = new int [N+1][N+1];
visit = new int[N+1];
path=new String[N+1];
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= N; j++) {
if(i == j) {
distance[i][j] = 0;
}else {
distance[i][j] = max;
}
}
bestmin[i] = max;
path[i] = new String("1-->" + i);
}
System.out.println("请输入" + M +"条数据x,y,z(表示x点到y点的距离为z):");
for(int i = 1; i <= M; i++) {
int x = input.nextInt();
int y = input.nextInt();
int z = input.nextInt();
distance[x][y] = z;
}
input.close();
Dijkstra();
PrintStream ps = new PrintStream("d:/output2.txt");
System.setOut(ps);//把创建的打印输出流赋给系统。即系统下次向 ps输出
Dijkstra();
PrintStream out = System.out; // 先把系统默认的打印输出流缓存
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
图算法-最小生成树和单源顶点最短路径
共2个文件
java:2个
需积分: 12 2 下载量 62 浏览量
2023-03-21
15:30:14
上传
评论
收藏 2KB ZIP 举报
温馨提示
1、 对于给定的赋权图G,编程计算图的最大边权最小生成树。 2、对于给定的赋权图G,编程计算图的单源顶点最短路径。
资源推荐
资源详情
资源评论
收起资源包目录
workseven.zip (2个子文件)
workseven
Prime2.java 3KB
Dijkstra_String_Source_Shortest_Path.java 3KB
共 2 条
- 1
资源评论
一起学习丫
- 粉丝: 140
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功