hdu 最短路模板题 java
最短路
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的更多相关文章
- HDU 5521.Meeting 最短路模板题
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- poj1511/zoj2008 Invitation Cards(最短路模板题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Invitation Cards Time Limit: 5 Seconds ...
- [poj2449]Remmarguts' Date(K短路模板题,A*算法)
解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...
- 牛客小白月赛6 I 公交线路 最短路 模板题
链接:https://www.nowcoder.com/acm/contest/136/I来源:牛客网 题目描述 P市有n个公交站,之间连接着m条道路.P市计划新开设一条公交线路,该线路从城市的东站( ...
- HDU 2544 最短路(模板题)
求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...
- [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ...
- POJ 2387 Til the Cows Come Home --最短路模板题
Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...
- hdu1874 最短路模板题
之所以做了第二道模板题还要写是因为发现了一些自己的问题 用的是dij 最简单的松弛 需要注意的地方是松弛的时候 判断dis[i]<dis[w]+tance[w][i]时 还要再判断 vis[i] ...
- HDU 2138 Miller-Rabin 模板题
求素数个数. /** @Date : 2017-09-18 23:05:15 * @FileName: HDU 2138 miller-rabin 模板.cpp * @Platform: Window ...
随机推荐
- 【Unity3D自学记录】Unity3D之自制小钟表
今天来写一个小钟表,事实上非常easy,就运用到了欧拉角. 首先创建时钟.分钟.秒钟以及4个点(12点.3点.6点.9点)偷懒了~~没弄那么多点. 时钟.分钟.秒钟这三个父级的中心一定要注意,我们旋转 ...
- python(18)- 协程函数及应用
协程 def init(func): def wrapper(*args,**kwargs): obj = func(*args,**kwargs) next(obj) return obj retu ...
- oracle insert/update
insert into table (,,) values (,,) where update table set (,)=(select , from ) where
- UVA 10526 - Intellectual Property (后缀数组)
UVA 10526 - Intellectual Property 题目链接 题意:给定两个问题,要求找出第二个文本抄袭第一个文本的全部位置和长度,输出前k个,按长度从大到小先排.长度一样的按位置从小 ...
- MVC3-表单
[.NET Core已取消]Html.BeginForm() 该方法用于构建一个From表单的开始,他的构造方法为:Html.BeginForm("ActionName", &qu ...
- PythonCookBook笔记——数据编码和处理
数据编码和处理 主要涉及用Python处理不同方式编码的数据,如CSV.JSON.XML和二进制包装记录. 读写CSV数据 使用csv库. import csv with open('stocks.c ...
- iOS开发教程:Storyboard全解析-第一部分
本文转载至http://blog.csdn.net/chang6520/article/details/7945845 感谢原文作者分享 故事版(Storyboard)是一个能够节省你很多设计 ...
- 【BZOJ3218】a + b Problem 可持久化线段树优化建图
[BZOJ3218]a + b Problem 题解:思路很简单,直接最小割.S->i,容量为Bi:i->T,容量为Wi:所有符合条件的j->new,容量inf:new->i, ...
- 关于Darwin接入私有协议、私有SDK码流的讨论
最近做到云视频/云监控的项目,跟团队伙伴讨论到一个架构问题,就是将私有协议的码流数据接入到Darwin,再通过Darwin对外提供高效的RTSP/RTP服务.说到私有协议接入Darwin, ...
- Spring MVC的映射请求
一.SpringMVC常用注解 @Controller 声明Action组件 @Service 声明Service组件 @Service("myMovieLister" ...