POJ 1502 MPI Maelstrom 最短路
2017-05-13 21:59
405 查看
题意:
给你一个不完全的矩阵,数字表示权值,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);
}
}
给你一个不完全的矩阵,数字表示权值,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);
}
}
相关文章推荐
- POJ - 1502 MPI Maelstrom(最短路dijkstra)
- POJ 1502 MPI Maelstrom 【最短路(迪杰斯特拉)】
- POJ 1502 - MPI Maelstrom(单源最短路)
- poj 1502 MPI Maelstrom 最短路
- POJ 1502 MPI Maelstrom (最短路)
- POJ-1502 MPI Maelstrom( 最短路 )
- POJ 1502 - MPI Maelstrom(单源最短路)
- poj 1502 MPI Maelstrom 单源最短路+dijkstra算法
- poj 1502 MPI Maelstrom([kuangbin带你飞]专题四 最短路练习)
- POJ 1502 MPI Maelstrom (最短路)
- 最短路spfa POJ 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom 单源最短路 Floyd Dijkstra
- poj 1502 MPI Maelstrom(最短路)
- POJ 1502 MPI Maelstrom(单源最短路)
- POJ 1502 MPI Maelstrom (简单最短路,多种算法均可)
- POJ 1502 MPI Maelstrom 【单源最短路中求最大值】
- poj 1502--MPI Maelstrom (最短路spfa)
- POJ 1502 MPI Maelstrom BFS最短路
- POJ 1502 MPI Maelstrom(最短路)
- 【POJ】1502 MPI Maelstrom 最短路