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 出发,到每个点的距离. 这道题就是一个单源最 ...
随机推荐
- ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)
转自:http://blog.csdn.net/pennyliang/article/details/8556662 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访 ...
- LAMP php5.4编译
编译时出现下列问题时: In file included from /usr/local/src/php-5.4.6/ext/gd/gd.c:103: /usr/local/src/php-5.4.6 ...
- xhr dojo load
require(["dojo/_base/xhr"], function(xhr) { // Execute a HTTP GET request xhr.get({ // The ...
- MySQL 获得当前日期时间 函数
获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------- ...
- jQuery extend() & jQuery.fn.extend(),插件编写
资料来源:网上资料整理并自行改编测试.复制以下代码并依赖jquery.js,jquery.validate.js即可执行.有误之处,请@我啊,敬请赐教. <!DOCTYPE html PUBLI ...
- iOS 处理多个网络请求的并发的情况
如何处理多个网络请求的并发的情况 一.概念 1.并发 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配 ...
- Spring和MyBatis环境整合
SSH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次. 开篇简介: Spring: Spring是一个轻量级的 ...
- Eclipse如何设置字体
Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,是学习java和开发java最常用的IDE之一.有时候会遇到这种情况,刚刚下载了新的Eclipse,字体显示英文没问题,但是显示中文就 ...
- 6、XML(2)
1 总结XML基础 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不 ...
- Discuz! X2头部header.htm修改指南
相对于1.5版本,2.0版本并没有在模板机制上做太大改动,基本延续了1.5的模板机制.下面我就为和大家一起过一下X2的头部代码.希望大家对头部代码有些认识. 1.顶部的设为首页,和收藏本站.这里是可以 ...