最短路

Problem Description

在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

Input

输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
输入保证至少存在1条商店到赛场的路线

Output

对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间

Sample Input

2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0

Sample Outpu

3 2

Source

UESTC 6th Programming Contest Online

Recommend

lcy   |   We have carefully selected several similar problems for you:  1142 1596 1690 1598 2923

SPFA:

邻接表实现: 二维数组, 第一维大小固定,为图中节点数,采用数组实现, 第二维大小不固定,采用arraylist实现。 与hashmap的结构类似,数组加链表实现。

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner; public class Main
{
static int maxn=100005;
static ArrayList<Edge>[] G = new ArrayList[maxn];
static class Edge
{
public int e;
public int w;
Edge(){}
Edge(int e,int w){this.e=e;this.w=w;}
}
public static void main(String []args)
{
Scanner in =new Scanner(System.in);
while (in.hasNext())
{
for(int i=0;i<G.length;i++) {G[i]=new ArrayList<>();} int n=in.nextInt();int m=in.nextInt();
if(n==0&&m==0) return;
for (int i = 0; i < m; i++)
{
int s = in.nextInt();
int e = in.nextInt();
int w = in.nextInt();
G[s].add(new Edge(e,w));
G[e].add(new Edge(s,w));
}
System.out.println(spfa(1, n));
} } static int spfa(int v, int et)
{
Queue<Integer> q = new LinkedList<>();
int[] dist = new int[maxn];
int[] vis = new int[maxn];
for (int i = 0; i < dist.length; i++){ dist[i] = Integer.MAX_VALUE;} q.offer(v);
dist[v]=0;
vis[v]=1;
while (!q.isEmpty())
{
int s = q.poll();
vis[s]=0; //记得恢复未访问标记
for (int i = 0; i < G[s].size(); i++)
{
int e = G[s].get(i).e;
int w = G[s].get(i).w;
if (dist[e] > dist[s] + w)
{
dist[e]=dist[s]+w;
if (vis[e] == 0)
{
vis[e] = 1;
q.offer(e);
}
}
}
}
return dist[et];
} }

Floyed

import java.util.Scanner;

public class Main2544_2
{
static int maxn=100005;
public static void main(String []args)
{
Scanner in =new Scanner(System.in);
while (in.hasNext())
{
int n=in.nextInt();int m=in.nextInt();
if(n==0&&m==0) break;
int [][]d=new int[n+1][n+1];
for (int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=maxn; for (int i = 0; i < m; i++)
{
int s = in.nextInt();
int e = in.nextInt();
int w = in.nextInt();
if(w<d[s][e])
{
d[s][e]=d[e][s]=w;
}
} //注意这里的顺序
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=Math.min(d[i][j],d[i][k]+d[k][j]);
System.out.println(d[1][n]);
} } }

hdu 最短路模板题 java的更多相关文章

  1. HDU 5521.Meeting 最短路模板题

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  2. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  3. [poj2449]Remmarguts' Date(K短路模板题,A*算法)

    解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...

  4. 牛客小白月赛6 I 公交线路 最短路 模板题

    链接:https://www.nowcoder.com/acm/contest/136/I来源:牛客网 题目描述 P市有n个公交站,之间连接着m条道路.P市计划新开设一条公交线路,该线路从城市的东站( ...

  5. HDU 2544 最短路(模板题)

    求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...

  6. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题

    银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ...

  7. POJ 2387 Til the Cows Come Home --最短路模板题

    Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...

  8. hdu1874 最短路模板题

    之所以做了第二道模板题还要写是因为发现了一些自己的问题 用的是dij 最简单的松弛 需要注意的地方是松弛的时候 判断dis[i]<dis[w]+tance[w][i]时 还要再判断 vis[i] ...

  9. HDU 2138 Miller-Rabin 模板题

    求素数个数. /** @Date : 2017-09-18 23:05:15 * @FileName: HDU 2138 miller-rabin 模板.cpp * @Platform: Window ...

随机推荐

  1. java中自带时间类使用方法实例 Date,Timestamp,DateFormat

    我们将以Java自带的时间日期类和当中的处理函数进行分析. 一.与时间日期有关的类. java.util.Date. 实现类,其对象具有时间.日期组件. java.util.Calendar. 抽象类 ...

  2. C和C++代码精粹笔记1

    CH1 更好的C 运算符重载规定,必须有一个为用户自定义类型 一些输出没注意到的函数: float x = 123.456, y = 12345; //cout.precision(2); //显示两 ...

  3. android自己定义渐变进度条

    项目中须要用到一个弧形渐变的进度条,通过android自带是不能实现的.我是没有找到实现的方法,有大神知道的能够指点.效果图是以下这种 这是通过继承VIew来绘制出来的,网上也有相似的,可是代码那是相 ...

  4. 服务管理-DHCP、NTP、SSH

    DHCP协议的作用及原理 1.寻找server 当DHCP客户端第一次登陆网络的时候,也就是客户发现本机上没有任何ip资料设定,他会向网路发送一个dhcpdiscover封包.因为客户端还不知道自己属 ...

  5. python--面向对象组合

    面向对象的命名空间 类中的方法   类中的静态属性   对象的属性类的组合应用 面向对象的命名空间 class A: country='中国' a=A() a.name='alex' print(a. ...

  6. java ArrayList倒序

    用Collections.reverse(list)即可.如:List<String> list = Arrays.asList(new String[] {"aa", ...

  7. unittest相关文档

    文档链接: http://blog.csdn.net/wangst4321/article/details/8454118

  8. Sum It Up POJ 1564 HDU 杭电1258【DFS】

    Problem Description Given a specified total t and a list of n integers, find all distinct sums using ...

  9. You're trying to decode an invalid JSON String JSON返回有解析问题

    SpringMVC架构的web程序,通常用map返回消息在浏览器中显示,但是实际中报下列错误“”You're trying to decode an invalid JSON String“返回的字符 ...

  10. Redis(一)基础数据结构

    1.目录 Redis 基础数据结构 string (字符串) list (列表) hash (字典) set (集合) zset (集合) 容器型数据结构的通用规则 过期时间 2.Redis 基础数据 ...