2016huasacm暑假集训训练三 C - Til the Cows Come Home
题目链接:https://vjudge.net/contest/123674#problem/C
N题目大意是有n个点,然后给出从a点到b点的距离,a和b是互相可以抵达的,则是无向图,问从1到n的最短距离
解题思路:只是一道简单的最短路问题,按照最短路模板就能AC,但这题还有有个主意点,就是重边问题,但我用的是spfa算法,就不需要考虑这个问题,如果是dijkstra算法就要考虑这个问题;
ac代码:
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int n, m;
static int[][] map = new int[][];
static int[] dis = new int[];
static boolean[] vis = new boolean[];
static final int Inf = 0x3f3f3f3f;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int u, v, w;
while (sc.hasNext()) {
m = sc.nextInt();n = sc.nextInt();
for (int i = ; i <= n; i++) {
for (int j = i; j <= n; j++) {
map[i][j] = Inf;
map[j][i] = Inf;
}
}
for (int i = ; i < m; i++) { //建图
u = sc.nextInt();
v = sc.nextInt();
w = sc.nextInt();
if (map[u][v] > w) { //spfa算法,已经考虑了重边问题,所以不需要再考虑
map[v][u] = w;
map[u][v] = w;
}
}
spfa();
System.out.println(dis[n]); //输出1~n的最短距离
}
sc.close();
}
private static void spfa(int s) { for (int i = ; i <= n; i++) {
vis[i] = false;
dis[i] = Inf;
}
dis[s] = ;
vis[s] = true;
Comparator<Integer> cmp = new Comparator<Integer>() { public int compare(Integer o1, Integer o2) {
int i = (int) o1;
int j = (int) ;
if (dis[i] > dis[j]) {
return ;
} else if (dis[i] == dis[j]) {
return ;
} else {
return -;
}
}
};
Queue<Integer> q = new PriorityQueue<Integer>(, cmp);
q.clear();
q.offer(s);
while (!q.isEmpty()) {
int head = q.poll();
vis[head] = false;
for (int i = ; i <= n; i++) {
int temp = dis[head] + map[head][i];
if (temp < dis[i]) {
dis[i] = temp;
if (!vis[i]) {
q.offer(i);
vis[i] = true;
2016huasacm暑假集训训练三 C - Til the Cows Come Home的更多相关文章
- 2016huasacm暑假集训训练三 G - 还是畅通工程
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/G 这题和上一道题差不多,还更简单点,直接用prim算法就行,直接贴AC代码: im ...
- 2016huasacm暑假集训训练三 F - Jungle Roads
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使 ...
- 2016huasacm暑假集训训练三 D - Invitation Cards
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/D 题意:一张个向图,求从点1开始到其他各点的最短路权值和加上从其他各点到点1的最短 ...
- 2016huasacm暑假集训训练三 B-Frogger
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/B 题意:一只青蛙在湖中一颗石头上, 它想去有另一只青蛙的石头上,但是 湖里的水很脏 ...
- 2016huasacm暑假集训训练五 H - Coins
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/H 题意:A有一大堆的硬币,他觉得太重了,想花掉硬币去坐的士:的士司机可以不找零,但 ...
- 2016huasacm暑假集训训练五 J - Max Sum
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/J 题意:求一段子的连续最大和,只要每个数都大于0 那么就会一直增加,所以只要和0 ...
- 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...
- 2016huasacm暑假集训训练五 F - Monkey Banana Problem
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/F 题意:求至上而下一条路径的所经过的值得和最大值,这题比赛时就出了 但当时看不懂题 ...
- 2016huasacm暑假集训训练五 E - What Is Your Grade?
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/E 题意:给做出的题目个数,5个的100分,4个的前n/2的同学95,后n/2的90 ...
随机推荐
- a与a:link、a:visited、a:hover、a:active
原文地址http://www.cnblogs.com/exmyth/p/3226654.html a与a:link.a:visited.a:hover.a:active 起因: a与a:link的 ...
- 指针与const
指向常量的指针,不能用于改变其所指对象的值. 指针的类型必须与所指对象的类型一致,但是有两个例外,第一种是允许令一个指向常量的指针指向一个非常量对象: double dra1 = 3.14; cons ...
- SpringMVC中向服务器传递时间参数时出现的问题
1. 问题描述: 今天在SpringMVC应用中上传参数的时候遇到如下问题: The request sent by the client was syntactically incorrect 这说 ...
- spring4 mvc 出错
java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetada ...
- 比较全的JS checkbox全选、取消全选、删除功能代码
看下面两种实现方法: JS checkbox 方法一: 复制代码 代码如下: function checkAll() { var code_Values = document.all['code_Va ...
- 树状数组+STL FZU 2029 买票问题
题目传送门 题意:中文题面 分析:隔了一个考试周再做,开始没有什么思路,感觉能用线段树/树状数组维护,树状数组维护最小值不会去写线段树,结果超时.后来发现只要维护前缀几个人以及用优先队列/set维护最 ...
- GridView中超链接设置
<%# Eval("id") %>Bind方式 <%# Bind("id","~/info.aspx?id={0}" ...
- java基础知识复习
String http://blog.csdn.net/uyu2yiyi/article/details/6275808 1. 首先String不属于8种基本数据类型,String是一个对象. 因为 ...
- unity 播放音乐
创建一个AudioSource组件,拖一个mp3组件到这个组建上 新建一个脚本,拖audiosource到audiosource的声明上 using UnityEngine; using System ...
- BZOJ3189 : [Coci2011]Slika
通过离线将操作建树,即可得到最终存在的操作. 然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可. 时间复杂度$O(n(n+m))$. #include<cstdio> cons ...