最短路

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. sql server 2008出现远程过程调用失败

    sql server  2008出现远程过程调用失败解决方式有下面几种: 1.依照网上说的方法.是由于装了vs 2012或是vs2013或是vs2015等高版本号时.安装了Microsoft SQL ...

  2. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密

    C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩   这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...

  3. Oracle 【to_number】【instr】

    需求:对一个包含数字的字符串排序 search后参考了  http://www.cnblogs.com/m-cnblogs/archive/2012/03/30/2425938.html 截屏: (用 ...

  4. Django-celery分布式任务

    昨天一个很好的面试官问我你在python中怎么实现定时任务呢?我没回答好,我问了下原来有个叫celery的东西,感觉挺好用的 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它 ...

  5. python staticmethod和classmethod(转载)

    staticmethod, classmethod 分别被称为静态方法和类方法. staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里只说对象总是容易产 ...

  6. Js 模拟鼠标点击事件

    var obj = document.getElementById('go'); if(document.all){ obj.click(); }else{ var e = document.crea ...

  7. Navicat Premium创建MySQL存储过程

    1.使用Navicat Premium打开创建函数向导,操作:连接名——数据库——函数——新建函数 2.选择过程——输入存储过程参数——完成(这一步可以不填写参数,编写存储过程代码的时候设置参数) 3 ...

  8. NOTE:rfc5766-turn-server

    NOTE:This project is active in Google code: http://code.google.com/p/rfc5766-turn-server/ 启动方法:./tur ...

  9. PostgreSQL Client Authentication Configuration File

    PostgreSQL: Documentation: 10: 16.4. Installation Procedure https://www.postgresql.org/docs/10/stati ...

  10. Android Handle,Looper,Message消息机制

    尊重原创,转载请标明出处    http://blog.csdn.net/abcdef314159 我们知道在Android中更新UI都是在主线程中,而操作一些耗时的任务则须要在子线程中.假设存在多个 ...