最短路(Dijkstra模板题)
就不写题目链接了
Sample Input
5 5 点个数a,边个数b
1 2 20 点,点,权值
2 3 30
3 4 20
4 5 20
1 5 100
求出1到a的最短距离
Sample Output
90
防止有重边
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 1000+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,T;
void dijkstra(int s)
{ int i,u,v;
for(u=;u<=N;u++)
{
lowcost[u]=INF;
vis[u]=;
}
lowcost[]=;
int Min=INF; while()
{
int p=-;
for(u=;u<=N;u++)
{
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
}
if(p==-) break;
vis[p]=;
for(u=;u<=N;u++)
if(!vis[u]&&(lowcost[p]+cost[p][u])<lowcost[u])
lowcost[u]=lowcost[p]+cost[p][u];
}
}
int main()
{
int i,j;
int a,b,w;
freopen("in.txt","r",stdin);
while(scanf("%d%d",&T,&N)!=EOF)
{
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
{
if(j==i)
cost[i][j]=;
else
cost[i][j]=cost[j][i]=INF;
}
}
for(i=;i<T;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b])
{
cost[a][b]=cost[b][a]=w;
}
}
dijkstra();
printf("%d\n",lowcost[N]);
}
}
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 200+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,M;
void dijkstra(int s)
{
int u,i,p;
for(u=;u<N;u++)
{
vis[u]=;
lowcost[u]=INF;
}
lowcost[s]=;
while()
{
p=-;
for(u=;u<N;u++)
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
if(p==-) break;
vis[p]=;
for(u=;u<N;u++)
if(!vis[u]&&(lowcost[p]+cost[u][p])<lowcost[u])
lowcost[u]=lowcost[p]+cost[u][p];
}
}
int main()
{
int i,j;
int a,b,w,s,e;
freopen("in.txt","r",stdin);
while(~scanf("%d%d",&N,&M))
{ for(i=;i<N;i++)
for(j=;j<N;j++)
if(i==j) cost[i][j]=cost[j][i]=;
else cost[i][j]=cost[j][i]=INF; for(i=;i<M;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b]) cost[a][b]=cost[b][a]=w; /*解决重边*/
}
scanf("%d%d",&s,&e);
dijkstra(s);
if(lowcost[e]==INF)
printf("-1\n");
else
printf("%d\n",lowcost[e]);
}
}
最短路(Dijkstra模板题)的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- HDU 2544 最短路(模板题——Floyd算法)
题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- POJ 2387 Til the Cows Come Home (dijkstra模板题)
Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...
- POJ 1502:MPI Maelstrom Dijkstra模板题
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...
随机推荐
- 利用Azure Redis Cache构建百万量级缓存读写
Redis是一个非常流行的基于内存的,低延迟,高吞吐量的key/value数据存储,被广泛用于数据库缓存,session的管理,热数据高速访问,甚至作为数据库方式提高应用程序可扩展性,吞吐量,和实施处 ...
- PHP手册应注意
1.抽象类翻译.错误.在语言参考→类与对象→抽象类一节的开头,有这样的描述"抽象类中 至少要包含一个抽象方法."(http://www.php.net/manual/zh/lang ...
- Effective Java实作toString() - 就是爱Java
Object class中,也定义了toString()这个方法,因此所有的class也都继承这个方法.默认是传回这个对象完整类别名称,后面接一个"@",及一个不带正副号的十六进制 ...
- openFileDialog与saveFileDialog的使用
private void btnOpen_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogR ...
- 关于java.sql.SQLRecoverableException: Closed Connection异常的解决方案(转)
在项目中碰到了一个应用异常,从表象来看应用僵死.查看Weblogic状态为Running,内存无溢出,但是出现多次线程堵塞.查看Weblogic日志,发现程序出现多次Time Out. 我们知道,We ...
- 【czy系列赛】czy的后宫6 && bzoj1044 [HAOI2008]木棍分割
题目描述 众所周知的是丧尸czy有很多妹子(虽然很多但是质量不容乐观QAQ),今天czy把n个妹子排成一行来检阅.但是czy的妹子的质量实在--所以czy看不下去了.检阅了第i个妹子会增加czy a[ ...
- REVERSE关键字之REVERSE索引
昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引. REVERSE索引也是一种B树索引,但它物理上将按照 ...
- WPF页面切换及弹窗
WPF页面切换及弹窗 结构如图: 效果如图: 代码如下: xaml <Window x:Class="PageChange.MainWindow" xmlns="h ...
- Handsontable Read-only cells
一,列只读
- Spark常用函数讲解之键值RDD转换
摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集RDD有两种操作算子: Trans ...