http://lx.lanqiao.cn/problem.page?gpid=T15
算法训练 最短路  
时间限制: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 stubn = 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;}}}}}}

  

转载于:https://www.cnblogs.com/zhumengdexiaobai/p/10427378.html

30-算法训练 最短路 spfa相关推荐

  1. 试题 算法训练 最短路

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入 ...

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

    问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从1号点到其他点的最短路(顶点从1到n编号). 输入格式 第一行两个整数n, m. 接下来的m行,每行有三个 ...

  3. 蓝桥杯练习系统习题-算法训练1

    蓝桥杯练习系统习题-算法训练1 题目搜索方式:Ctrl+F--> 输入题目名称->定位到解答. 入门训练(详见 算法-蓝桥杯习题(1-1)) 基础练习(详见 算法-蓝桥杯习题(2-1)) ...

  4. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  5. 算法训练:嘘,别人我不告诉TA

    算法训练:嘘,别人我不告诉他 算法 or 游戏 基础的设计能力:不知道如何下手怎么办? 基础的建模能力:数组.链表,以及改进的结构 解题技巧:也说不清楚,就是对这道题有 feel 呀! 攻略:新手.老 ...

  6. 试题 算法训练 逗志芃的暴走

    试题 算法训练 逗志芃的暴走 复习累了随便刷了道题,但没想到的是这道dfs有点坑... 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼. ...

  7. 蓝桥杯 算法训练 最大的算式

    传送门 算法训练 最大的算式   时间限制:1.0s   内存限制:256.0MB 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终 ...

  8. 蓝桥杯练习系统习题-算法训练6

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练6 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  9. 蓝桥杯练习系统习题-算法训练3

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练3 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

最新文章

  1. 成长与迁移,全球半导体格局演变
  2. 太原科技大学计算机在哪个校区,太原科技大学有几个校区及校区地址 哪个校区最好...
  3. 利用循环神经网络生成唐诗_【机器学习】【期末复习】闲聊神经网络 分类
  4. springboot学习笔记(九)
  5. 为进阶Linux大佬打牢地基
  6. 2.图像作为函数 | 生成高斯噪音_8
  7. centos mysql php tomcat_CentOS 6.x使用yum快速安装Apache+PHP+Tomcat(JSP)+MySQL
  8. C++ container member map
  9. 1090 危险品装箱 (25 分)—PAT (Basic Level) Practice (中文)
  10. B+树 mysql
  11. 基于Springboot+Vue开发建筑工地用料管理系统
  12. 2.1 对称密钥的生成及以对象序列化方式保存
  13. 内网穿透端口映射工具
  14. MAVEN下载修改settings.xml
  15. R语言ETL系列:创建字段(mutate)
  16. 【招生目录】 2023年北京交通大学计算机学院博士研究生招生专业目录
  17. //苏嵌//张朋//2018.07.11
  18. 面向未来,镭速助力企业构建文件安全外发新生态
  19. 到底什么是用户体验?
  20. Mathematica做微积分

热门文章

  1. javaSE----学习路线
  2. List集合中对象的排序
  3. php password_hash和password_verify
  4. 字符串%百分号 和 format 格式化
  5. Android高级开发-布局渲染流程与优化
  6. 【jQuery实例】Ajax登录页面
  7. 安全测试工具-kali_无需整理
  8. 创建可用实验快照(二)
  9. 用Alamofire进行网络请求的一段代码解析(一)
  10. web.xml中的主要元素说明(listener, filter, servlet)