Dijstra算法-------为了纪念,等以后看的时候方便
杭电problem2066
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 27 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Problem Description
Input
Output
Sample Input
6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
Sample Output
9 1 #include<iostream>
#include<cstring>
//#include<fstream>
using namespace std;
int T,S,D;
int arr[][];
bool judge[];
int d[]; void Dijkstra(int star,int endf)//此处就是我上篇写的模板,只是改动了参数变量以及那因题而异的“最小值”
{
for(int f=;f<=endf;f++)
d[f]=arr[star][f];
memset(judge,false,sizeof(judge));
judge[star]=true;
d[star]=;
for(int i=;i<=endf;i++)
{
int min=,g=;
for(int k=;k<=endf;k++)
if(!judge[k]&&d[k]<min)
{
min=d[k];
g=k;
}
judge[g]=true;
for(int j=;j<=endf;j++)
if((d[g]+arr[g][j]<d[j]))
d[j]=d[g]+arr[g][j]; }
}
int main()
{ // freopen("in.txt","r",stdin);
int a,b,time,c;
while(cin>>T>>S>>D)
{ int ma=;
memset(arr,,sizeof(arr));
for(c=;c<T;c++)
{
cin>>a>>b>>time;
if(time<arr[a][b])
arr[a][b]=arr[b][a]=time;
if(a>ma) ma=a;//很牛的是这里,当然了也是看到大牛的杰作,这次会了,下次也就成大牛了
if(b>ma) ma=b;//ma就是用来求出顶点编号最大的
}
ma++;//最大的加一以后是什么结果呢
//就是相当于把草儿想去的地方归结到一个顶点,这样做的话,对于应用Dijstra是有很大的益处的
for(c=;c<S;c++) {cin>>a;arr[][a]=;}
for(c=;c<D;c++) {cin>>a;arr[a][ma]=;}//那就是这句了
Dijkstra(,ma);
cout<<d[ma]<<endl;
}
return ;
} 思路很清晰吧!
再啰嗦一下思路:
1:首先按题目条件读入数据,并作适当处理,个人认为Dijstra算法如何应用取决与开始对数据的处理以及它内部的一些微小改变
(就如此题在开始的时候对数据进行预处理就大大简化了后面的操作)
2:直接用Dijstra算法模板,只不过那个参数要稍微改变一下
3:最大值一定要选取恰当,小的话就会wronganswer,大的话就有可能超时 好了就这么多了,保证我过一个月后能看懂就可以啦
Dijstra算法-------为了纪念,等以后看的时候方便的更多相关文章
- dijstra算法,求源点到各个顶点的最短距离
1:dijstra算法常用语求最短距离, dijstra每次从未发现节点n[]中,发现距离源点最短的节点m,求出最短节点后,将m添加到已发现节点y[]中,用该节点m进行更新其它未发现节点n[]-m的最 ...
- 单源最短路Dijstra算法
Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径.Distra算法的思想与Prim算法很像,它收录顶点的规则是按照路径长度递增的顺序收录的.设v0是源顶点,我们要寻找从v0出发到其他任意 ...
- KMP算法最浅显理解——一看就明确
说明 KMP算法看懂了认为特别简单,思路非常easy,看不懂之前.查各种资料,看的稀里糊涂.即使网上最简单的解释,依旧看的稀里糊涂. 我花了半天时间,争取用最短的篇幅大致搞明确这玩意究竟是啥. 这里不 ...
- JS中几种常见的数组算法(前端面试必看)
JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ f ...
- 最短路,dijstra算法
#include<iostream> #include<stdio.h> #include<math.h> #include<vector> using ...
- Dijstra算法求最短路径
参考博客:http://blog.51cto.com/ahalei/1387799 与Floyd-Warshall算法一样这里仍然使用二维数组e来存储顶点之间边的关系,初始值如下. ...
- 硬盘上的一些算法小题目||and今天看了下林锐的书以及gdb调试 及一些变成算法小题目
gdb调试:观察点,断点,事件捕捉点.step 进入函数,next 跳过函数,until 跳出循环,finish 结束函数 林锐:书后试题 & c++的对象模型图 看了二叉树的非递归遍历, 链 ...
- 最短路和次短路的条数(dijstra算法或spfa算法)POJ3463
http://poj.org/problem?id=3463 Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- sqrt开平方算法的尝试,是的看了卡马克大叔的代码,我来试试用C#写个0x5f3759df和0x5f375a86跟System.Math.Sqrt到底哪个更强
今天笔试遇到一个代码题,要求写一个开平方算法,回来发现了雷神之锤里的一段神代码: float Q_rsqrt( float number ) { long i; float x2, y; const ...
随机推荐
- Java文件压缩优化工具(ProGuard) 软件介绍 Soft content
ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...
- 【转】Jmeter:图形界面压力测试工具
Jmeter是一款强大的图形界面压力测试工具,完全用Java写成,关于Jmeter的介绍,网上其实有不少的文章,我原本是不想再重复写类似文章的,但我发现有些很关键性的,在我们测试中一定会用到的一些设置 ...
- 文化之旅(dijstra)
2012_p4 文化之旅 (culture.cpp/c/pas) 时间限制: 1 Sec 内存限制: 128 MB提交: 43 解决: 16[提交][状态][讨论版][命题人:外部导入] 题目描述 ...
- 23 mysql怎么保证数据不丢失?
MySQL的wal机制,得到的结论是:只要redo log和binlog 持久化到磁盘,就能确保mysql异常重新启动后,数据是可以恢复的. binlog的写入机制 其实,binlog的写入逻辑比较简 ...
- Rest之路 - 搭建开发环境
准备Jersey框架和类库 从官网 (https://jersey.java.net/download.html) 下载最新的zip文件,解压后如下图: lib: 包含Jersey的所有类库. ext ...
- linnx常用命令学习
ll命令就相当于ls -l. [-][rwx][r-x][r--] [-] 代表这个文件名为目录或文件(d为目录-为文件) [rwx]为:拥有人的权限(rwx为可读.可写.可执行) [r-x]为:同群 ...
- Node.js实用知识点
本文介绍如何使用nodejs 简单的HttpServer 调试nodejs 基础路由 nodejs配置开发和生产环境 nodejs核心模块一览 express用法 文件I/O nodejs模块 nod ...
- Java面向对象-方法的定义及简单使用
Java面向对象之方法 方法是对象的一部分,也称为行为: 先来一个简单实例: package com.java1234.chap03.sec03; public class Person { void ...
- windows命令行 查询/kill 进程
查询: tasklist kill对应进程 按名称:taskkill /im xxx.exe 按pid: taskill /pid pid kill掉xxx进程的相关进程(子进程) taskkill ...
- Vulkan Tutorial 04 理解Validation layers
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 What are validation layers? Vulkan API的设计核 ...