2016HUAS_ACM暑假集训3C - Til the Cows Come Home
单源最短路径,首先想到的是Dijkstra。Dijkstra算法的思路就不啰嗦了,概括起来就是时刻保持当前节点到目标节点的距离最短。
题目大意(不进行翻译解释了,就抽离为图来表达):有N个顶点和T条边的无向图,求从1号顶点到N号顶点的最短距离是多少。
Sample Input:(先T后N!先T后N!先T后N!)
5 5
1 2 20 //分别是两个顶点v1、v2,以及它们之间的权值
2 3 30
3 4 20
4 5 20
1 5 100
Sample Output:
由于比较简单,所以也不需要太多注释。
#include<iostream>
#include<cstdio>
#include<cstring>
#define size 1001
#define INF 0x3f3f3f3f
using namespace std;
int N,T,a,b,c,i,j,k;
int land[size][size],dis[size],flag[size]; int min(int a,int b)//树的维护那里可以用判断语句,也可以用这个来选出较小的那个
{
return ((a)<(b))?(a):(b);
} void init()//初始化
{
memset(land,INF,sizeof(land));
memset(dis,INF,sizeof(dis));
memset(flag,,sizeof(flag));
} void Dijkstra()
{
dis[]=;
for(i=;i<N;i++)//遍历
{
int M=INF,X;
for(j=;j<=N;j++)
{
if(!flag[j]&&dis[j]<M)
{
M=dis[j];
X=j;
}
}
flag[X]=;//标记
for(k=;k<=N;k++)//维护
dis[k]=min(dis[k],dis[X]+land[X][k]);
}
cout<<dis[N]<<endl;
} int main()
{
while(cin>>T>>N)
{
init();
while(T--)
{
cin>>a>>b>>c;
if(land[a][b]>c)//只记录最短的
land[a][b]=land[b][a]=c;
}
Dijkstra();
}
return ;
}
2016HUAS_ACM暑假集训3C - Til the Cows Come Home的更多相关文章
- 2016HUAS_ACM暑假集训4C - 递推
题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...
- 2016HUAS_ACM暑假集训4A - 递推
利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...
- 2016HUAS_ACM暑假集训4D - 计数,排列
一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...
- 2016HUAS_ACM暑假集训4M - 基础DP
简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1 //测试组数T 5 10 ...
- 2016HUAS_ACM暑假集训4K - 基础DP
我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...
- 2016HUAS_ACM暑假集训4F - 数论
这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...
- 2016HUAS_ACM暑假集训4B - 递推
这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...
- 2016HUAS_ACM暑假集训3G - 还是畅通工程
最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3 //村庄个数1 2 1 ...
- 2016HUAS_ACM暑假集训3F - Jungle Roads
这个题目属于最小生成树问题,可以用Prim,也可以用Kruskal(还没试).题意简单直接,给你一个图,求出它最小生成树的权值. 题目最有趣的地方就是图的顶点是字母,稍微处理一下就好了. Sample ...
随机推荐
- 理解RxJava线程模型
RxJava作为目前一款超火的框架,它便捷的线程切换一直被人们津津乐道,本文从源码的角度,来对RxJava的线程模型做一次深入理解.(注:本文的多处代码都并非原本的RxJava的源码,而是用来说明逻辑 ...
- JavaEE开发环境搭建(2)---(MySQL的安装)
上次写了JavaEE开发环境搭建之jdk的安装...然后自己看的时候感觉有时候加载图片不是很流畅,所以这次就少添加点图片了~~ JavaEE开发环境搭建之MySQL的安装 1:mysql 的下载 在百 ...
- json 后台传前台
jsonObject需实例化new.jsonObject=new JSONObject();jsonObject.put("goodslist", list);jsonObject ...
- struts2学习:配置篇之namespace
把namespace单独拉出来讲一方面是因为它实际上不是一个element,而只是一个attribute,前面已经说了,它是package的一个attribute:另外一方面是因为这个属性是我接触St ...
- magic_quotes_gpc
ini里面有这个magic_quotes_gpc设置,是为了防止忘记处理而和mysql有冲突,引起mysql的风险,于是,认为的加上\slash,但是我们在Php中获得值的时候,需要判断如果这个值为1 ...
- 带事物处理的DBHelp和sql语句
DBHelp语句 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- C语言混乱代码大赛
main() {printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0 ...
- Windows—JDK安装与环境变量配置
本文介绍JDK的安装与环境变量配置. 工具/原料 JDK1.8.0_65 WIN7 32bit jdk-8u65-windows-i586.exe 方法/步骤 安装JDK 选择安装目录 安装过程中会 ...
- 读javascript高级程序设计13-JSON
JSON是一个轻量级的数据格式,可以简化表示数据结构的工作量.在实际工作中,我们经常用它来传递数据,不过对于其使用的一些细节还是需要注意的.在ECMAScript5中定义了原生的JSON对象,可以用来 ...
- jpype调用jar
import easyguiimport osfrom jpype import * jarpath = "d:\jar"print "jarPath: %s" ...