hdu 1874(Dijkstra + Floyd)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
畅通工程续
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 27692 Accepted Submission(s): 10019
现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。
每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。城镇分别以0~N-1编号。
接下来是M行道路信息。每一行有三个整数A,B,X(0<=A,B<N,A!=B,0<X<10000),表示城镇A和城镇B之间有一条长度为X的双向道路。
再接下一行有两个整数S,T(0<=S,T<N),分别代表起点和终点。
缺一则WA
Dijkstra:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <map> #define INF 1000000000
#define MAXX 210
int mp[MAXX][MAXX];
int visit[MAXX],d[MAXX]; void Dijkstra(int st,int n)
{
int i,j,y;
memset(visit,,sizeof(visit));
for(int i=;i<n;i++)
{
d[i]=mp[st][i];
}
d[st]=;
for(int i=;i<n;i++)
{
int m=INF,x=;
for(y=;y<n;y++)
{
if(!visit[y] && d[y]<=m)
{
m = d[x = y];
}
}
visit[x]=;
for(y=; y<n; y++)
{
if(!visit[y] && d[y]>d[x]+mp[x][y])
{
d[y]=d[x]+mp[x][y];
}
}
}
} int main()
{
int n,m,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=; i<MAXX; i++)
for(j=; j<MAXX; j++)
mp[i][j]=INF;
int a,b,c,st,ed;
for(i=; i<m; i++)
{
scanf("%d%d%d",&a,&b,&c);
mp[a][b]=mp[a][b]>c?c:mp[a][b];
mp[b][a]=mp[a][b];
}
scanf("%d%d",&st,&ed);
if(st == ed)
{
printf("0\n");
continue;
}
Dijkstra(st,n);
if(d[ed] == INF)
{
printf("-1\n");
}
else
{
printf("%d\n",d[ed]);
}
}
return ;
}
Floyd:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm> #define MAXX 210
#define INF 1000000000 int d[MAXX][MAXX]; void Floyd(int n)
{
int i,j,k;
for(k=; k<n; k++)
for(i=; i<n; i++)
for(j=; j<n; j++)
if(d[i][k] + d[k][j] < d[i][j])
d[i][j] = d[i][k] + d[k][j];
} int main()
{
int n,m,i,j;
//freopen("in.txt","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=; i<MAXX; i++)
for(j=; j<MAXX; j++)
d[i][j] = INF;
int a,b,c;
for(i=; i<m; i++)
{
scanf("%d%d%d",&a,&b,&c);
d[a][b] = d[a][b] > c ? c : d[a][b];
d[b][a] = d[a][b];
}
int st,ed;
scanf("%d%d",&st,&ed);
if(st == ed)
{
printf("0\n");
continue;
}
Floyd(n);
if(d[st][ed] == INF)
printf("-1\n");
else
printf("%d\n",d[st][ed]);
}
return ;
}
hdu 1874(Dijkstra + Floyd)的更多相关文章
- 最短路径:(Dijkstra & Floyd)
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...
- HDU 1874 SPFA/Dijkstra/Floyd
这题作为模板题,解法好多... 最近周围的人都在搞图论阿,感觉我好辣鸡,只会跟风学习. 暂时只有SPFA和Dijkstra的 SPFA (邻接表版.也可以写成临接矩阵存图,但题目可能给出平行边的,所以 ...
- Bomb HDU - 3555 (数位DP)
Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...
- 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))
扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/7823 ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- poj1847 Tram(Dijkstra || Floyd || SPFA)
题目链接 http://poj.org/problem?id=1847 题意 有n个车站,编号1~n,每个车站有k个出口,车站的出口默认是k个出口中的第一个,如果不想从默认出口出站,则需要手动选择出站 ...
- Poj1062 昂贵的聘礼 (dijkstra算法)
一.Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长 ...
- 0016:单源最短路径(dijkstra算法)
题目链接:https://www.luogu.com.cn/problem/P4779 题目描述:给定一个 n 个点,m 条有向边的带非负权图,计算从 s 出发,到每个点的距离. 这道题就是一个单源最 ...
随机推荐
- linux问题汇总---如何生成密钥对
准备:2台机器,ip分别为:192.168.0.195 192.168.1.210目的:通过195ssh远程访问210.无需输入密码 1.首先在195上生成密钥对.#cd /root/.ssh ...
- NLog
C# 使用NLog记录日志 C#第三方日志库Nlog NLog类库使用探索——详解配置 使用Nlog记录日志到数据库 NLog文章系列——系列文章目录以及简要介绍 NLog日志框架简写用法(write ...
- C# 探索c#之Async、Await剖析
探索c#之Async.Await剖析 作者:蘑菇先生 出处:http://mushroom.cnblogs.com/
- 转载:JMS-ActiveMQ浅析
ActiveMQ 即时通讯服务 浅析 一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE ...
- Java、JVM和操作系统之间的关系,写给新人,
来张图:这个帖子写给新人的,老玩家就直接无视他,因为这个完完全全是白话基础原理. 解释:上面的图是从上往下依次调用的关系. 操作系统(Windows/Linux)管理硬件,让硬件能够正常.合理的运行, ...
- IE11下,IIS7.5不自动生成__doPostBack事件
MS在 2013/10/8 已出补丁 http://www.microsoft.com/zh-cn/download/details.aspx?id=39257 https://support.mic ...
- [转]centos中wget的使用方法
本文转自 http://www.cnblogs.com/chusiping/archive/2011/11/10/2243805.html 和 http://www.jb51.net/os/RedHa ...
- PostgreSQL的 Slony-I 数据同步
原文--http://www.tuicool.com/articles/mMvARf 先谈谈slony的局限性: 1. DDL动作是不会被复制到: 2. 如果想使用slony来同步数据,表必须是带有主 ...
- [HTML]HTML5实现可编辑表格
HTML5实现的简单的可编辑表格 [HTML]代码 <!DOCTYPE html > <html > <head> <meta charset="u ...
- python :生产者和消费者模型 即简单的协程
def consumer(name): print('%s开始准备吃包子了' %name) while True: baozi=yield print('[%s]包子来了,被[%s]吃了' %(bao ...