POJ 1502 MPI Maelstrom 最短路

题意:
给你一个不完全的矩阵,数字表示权值,x表示两点间不可达
由于自身到自身花费的时间为0,所以没有给出,由于i到j和j到i距离相同,互达时间相同
所以只给出了一半的临界矩阵。
根据给你的这个临界矩阵,让你来求从点1到其他点所花费最短时间集里面的的最大值。
其实这是一个很直接的最短路
package 最短路;


import java.util.Scanner;


public class A1502 {
static int n;
static int[][] map = new int[10000][10000];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
scanner.nextLine();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j)
map[i][j] = 10000;//千万不要用Integer.Max_value
else 
map[i][j] =0;
for(int i=2;i<=n;i++)
for(int j=1;j<i;j++){
String s = scanner.next();
if(s.charAt(0)!='x')
map[i][j] = map[j][i] = Integer.parseInt(s);
}
dijstra();
}
public static void dijstra(){
int v=1;
int ans=-1;
int[] d = new int[10000];
int[] vis = new int[10000];
for(int i=1;i<=n;i++)
{
d[i] = 10000;
vis[i]=0;
}
d[1] = 0;
vis[1]=1;
for(int i=1;i<=n;i++)
{  
int min = 10000;
for(int j=1;j<=n;j++)
{
if(vis[j]==0&&d[j]<min)
{
min = d[j];
v = j;
}
}
vis[v]=1;
for(int j=1;j<=n;j++)
{
if(vis[j]==0&&d[v]+map[v][j]<d[j])
{
d[j] = d[v]+map[v][j];
}
}
}
for(int i=2;i<=n;i++)
if(d[i]>ans) ans=d[i];
System.out.println(ans);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值