算法训练 最短路  
时间限制:1.0s   内存限制:256.0MB
      
问题描述

给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。

输入格式

第一行两个整数n, m。

接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。

输出格式
共n-1行,第i行表示1号点到i+1号点的最短路。
样例输入
3 3
1 2 -1
2 3 -1
3 1 2
样例输出
-1
-2
数据规模与约定

对于10%的数据,n = 2,m = 2。

对于30%的数据,n <= 5,m <= 10。

对于100%的数据,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保证从任意顶点都能到达其他所有顶点。

提示: 下面的代码只有70分,超时了!

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner; import javax.management.Query; public class Main {
public static Scanner cin = new Scanner(System.in);
public static ArrayList[] v1 = new ArrayList[20005];//v1[i]表示从i到达的点
public static ArrayList[] v2 = new ArrayList[20005];//v1对应路径的权值
public static int visit[] = new int[20005];
public static int d[] = new int[20005];
public static int n, m; public static void main(String[] args) {
// TODO Auto-generated method stub
n = cin.nextInt();
m = cin.nextInt();
//初始化链表
for(int i = 1; i <= n; i++) {
v1[i] = new ArrayList();
v2[i] = new ArrayList();
}
int a, b, l;
for(int i = 0; i < m; i++) {
a = cin.nextInt();
b = cin.nextInt();
l = cin.nextInt();
v1[a].add(b); //有向图
v2[a].add(l);
}
spfa(1);
for(int i = 2; i <= n; i++) {
System.out.println(d[i]);
}
} public static void spfa(int s) {
for(int i = 1; i <= n; i++) {
d[i] = 0x3f3f3f3f;
}
d[s] = 0;
visit[s] = 1;
int[] num = new int[20005];
Queue<Integer> mq = new LinkedList<>();
mq.add(s);
num[s] = 1;
while(!mq.isEmpty()) {
int x = mq.peek();
mq.poll();
visit[x] = 0;
int ln = v1[x].size();
for(int i = 0; i < ln; i++) {
int v = (int) v1[x].get(i);
int len = (int) v2[x].get(i);
if(d[v] > d[x] + len) {
d[v] = d[x] + len;
if(visit[v] == 0) {
mq.add(v);
visit[v] = 1;
// num[v]++;
// if(num[v] > n)
// return;
}
}
}
}
} }

  

30-算法训练 最短路 spfa的更多相关文章

  1. 蓝桥杯 算法训练 最短路 [ 最短路 bellman ]

    传送门   算法训练 最短路   时间限制:1.0s   内存限制:256.0MB     锦囊1   锦囊2   锦囊3   问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证 ...

  2. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

  3. [ACM] 最短路算法整理(bellman_ford , SPFA , floyed , dijkstra 思想,步骤及模板)

    以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt. 可是每当我们的工作人员把上百件的衣服从商店运回到赛场的 ...

  4. 图论算法(三) 最短路SPFA算法

    我可能要退役了…… 退役之前,写一篇和我一样悲惨的算法:SPFA 最短路算法(二)SPFA算法 Part 1:SPFA算法是什么 其实呢,SPFA算法只是在天朝大陆OIers的称呼,它的正统名字叫做: ...

  5. ALGO-5_蓝桥杯_算法训练_最短路

    记: 一开始没接触过关于最短距离的算法,便开始翻阅关于图的知识, 得知关于最短距离的算法有Dijkstra算法(堆优化暂未看懂),Bellman-Ford算法,Floyd算法,SPFA算法. 由于数据 ...

  6. 单源最短路——SPFA算法(Bellman-Ford算法队列优化)

    spfa的算法思想(动态逼近法):     设立一个先进先出的队列q用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路 ...

  7. Java实现 蓝桥杯 算法训练 Remember the A La Mode(暴力)

    试题 算法训练 Remember the A La Mode 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参与者提供甜点的餐饮服务.他将会提供上面有冰激凌的饼片.为了满足不 ...

  8. 蓝桥杯 算法训练 区间k大数查询(水题)

    算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...

  9. 算法训练 区间k大数查询

    http://lx.lanqiao.org/problem.page?gpid=T11 算法训练 区间k大数查询   时间限制:1.0s   内存限制:256.0MB        问题描述 给定一个 ...

随机推荐

  1. 解决linux下访问https站点问题

    pfx转jks:(注:因jks要求密码长度不能小于6位,所以申请pfx证书时,密码长度最好不小于6位) keytool -importkeystore -v -srckeystore ***.pfx ...

  2. java split函数结尾空字符串被丢弃的问题

    参考: http://yinny.iteye.com/blog/1750210 http://www.xuebuyuan.com/1692988.html java中的split函数用于将字符串分割为 ...

  3. where后一个条件和多个条件的查询速度

    如果记录中有两个都是 唯一标识的  ,那是都where  and 还是只写一个比较快 ---- 一个快

  4. httpClient服务端编写

    以前用过HttpClient,给你说几个关键的地方吧: 1. 首先,发送的时候 HttpClient client = new HttpClient(); PostMethod method = ne ...

  5. 吴裕雄 28-MySQL 序列使用

    MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现 使用AUTO_INCREMENTMySQ ...

  6. 吴裕雄 25-MySQL 临时表

    MySQL 临时表MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间.临时表在MySQL 3.23版本中添加,如果你 ...

  7. hdu3333-Turing Tree-(线段树+离散化处理)

    Turing Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. ASP.NET 简介

    简介:ASP.NET - 制作网站应用程序的技术1.  WebForm 2.  MVC 什么东西? winform 界面 - 后台 - 数据库 共同组合出来的程序:ASP.NET 界面(HTML+CS ...

  9. 三种方法让Response.Redirect在新窗口打开

    通过设置form的target属性同样可以让Response.Rederect所指向的url在新的窗口打开,下面为大家介绍三种具体的实现方法 Response.Rederect在默认情况下是在本页跳转 ...

  10. linux下网络配置

    配置相关 http://bbs.acehat.com/thread-813-1-1.html