HDUOJ --2544最短路(基础)
输入保证至少存在1条商店到赛场的路线。
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
2
代码:基于数组(时间复杂度为O(n^2))
#include<stdio.h>
#include<string.h>
const int inf=0x3f3f3f3f ;
int path[];
int sta[][],lowcost[];
void Dijkstra( int cost[][], int n )
{
int i,j,min;
int vis[]={};
for(i=; i<n ; i++)
{
lowcost[i]=cost[][i];
path[i]=;
}
lowcost[]=;
path[]=-;
int pre= ;
for( i= ; i<n ;i++)
{
min=inf;
for(j= ; j<n ;j++)
{
if(vis[j]==&&lowcost[pre]+cost[pre][j]<lowcost[j])
{
lowcost[j]=lowcost[pre]+cost[pre][j];
path[j]=pre;
}
}
for(j=; j<n ;j++)
{
if(vis[j]==&&lowcost[j]<min)
{
min=lowcost[j];
pre=j;
}
}
vis[pre]=;
}
printf("%d\n",lowcost[n-]);
} int main()
{
int n,m,x,y,val,i,j;
while(scanf("%d%d",&n,&m),n+m)
{
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
sta[i][j]=inf;
}
}
while(m--)
{
scanf("%d%d%d",&x,&y,&val);
sta[y-][x-]=sta[x-][y-]=val;
}
Dijkstra(sta,n);
}
return ;
}
采用以为数组,时间复杂度将为O(n*long(n));
代码:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;
const int tol=;
const int edg=;
int cost[edg],dist[tol]; /* <distance> */
int e,pnt[edg],nxt[edg],prev[tol],head[tol],vis[tol];
struct qnode{
int v ,c;
qnode(int vv= ,int cc=):v(vv),c(cc){};
bool operator <(const qnode& r)const
{
return c>r.c;
}
}; void Dijkstra(int n , const int src) /* <src出发点> */
{
qnode mv ; //充当一个临时变量
int i,j,k,pre;
priority_queue<qnode>que ; /*<priority—>优先队列>*/
vis[src]=;
dist[src]=;
que.push( qnode(src,) );
for( pre=src,i=; i<n; i++)
{
for(j=head[pre] ; j!=- ;j=nxt[j])
{
k=pnt[j];
if(vis[k]==&&dist[pre]+cost[j]<dist[k])
{
dist[k]=dist[pre]+cost[j];
que.push( qnode(pnt[j], dist[k]) );
prev[k]=pre;
}
}
while(!que.empty() && vis[que.top().v]==)
{
que.pop();
}
if(que.empty())break;
mv=que.top();
que.pop();
pre=mv.v;
vis[pre]=;
}
}
inline void addedge( int u ,int v,int c)
{
pnt[e]=v;
cost[e]=c;
nxt[e]=head[u];
head[u]=e++; } void init(int nv ,int ne)
{
int i,u,v;
int c;
e=;
memset(head,-,sizeof(head));
memset(vis,,sizeof(vis));
memset(prev,-,sizeof(prev));
for(i=; i<nv ; i++)
dist[i]=inf;
for(i=; i<ne ;i++)
{
scanf("%d%d%d",&u,&v,&c);
addedge(u-,v-,c);
addedge(v-,u-,c);
} }
int main()
{
int n,m;
while(scanf("%d%d",&n,&m),n+m)
{
init(n,m);
Dijkstra(n,);
printf("%d\n",dist[n-]);
}
return ;
}
HDUOJ --2544最短路(基础)的更多相关文章
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- hdu 2544 最短路
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shi ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2544最短路 (迪杰斯特拉算法)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others) Me ...
- HUD.2544 最短路 (Dijkstra)
HUD.2544 最短路 (Dijkstra) 题意分析 1表示起点,n表示起点(或者颠倒过来也可以) 建立无向图 从n或者1跑dij即可. 代码总览 #include <bits/stdc++ ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...
- hdoj 2544 最短路
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2544 分析:Dijkstra算法 //2013-10-30 10:01:25 Accepted 254 ...
- hdu 2544最短路——最短路的初次总结 UESTC 6th Programming Contest Online
这是一道标准的模板题,所以拿来作为这一段时间学习最短路的总结题目. 题意很简单: 有多组输入数据,每组的第一行为两个整数n, m.表示共有n个节点,m条边. 接下来有m行,每行三个整数a, b, c. ...
随机推荐
- sqlalchemy简单示例
1.初始化数据库database.py #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by miaoshuijian on 2017/ ...
- 原创D3D几何实例化的DEMO
CUBE的几何实例化DEMO 鼠标右键按下并拖动 旋转视角WSAD 前后左右RF ...
- maven 将jar 下载到工程当前目录下
在 pom.xml 的目录下,运行cmd命令 : call mvn -f pom.xml dependency:copy-dependencies 然后在同一目录下出现文件夹target,内容就是ja ...
- Javascript执行效率总结
Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...
- RPC框架研究(二)Hadoop源代码-1
报名了阿里中间件性能大赛,我来说是一个全新的挑战.一切从空白学起,比赛的过程也是学习的过程 是的.想让自己学好.给自己报一个比赛吧~ 就像当初学围棋,也是报了围棋比赛,为了不至于输的太慘.一个星期里学 ...
- JavaScript 与 PHP 的语法区别
1. 基本类型 php的基本类型分别: .基本数据类型:整型.小数(float/double).字符串.布尔类型 .复合类型:数组.对象 .特殊类型:Null,资源类型 JavaScript的基本类型 ...
- CentOS6.X下安装配置独立SVN服务器Subversion server
Subversion(简称SVN,svn),一个开放源码的版本号控制系统.相较于RCS.CVS,它採用了分支管理系统,它的设计目标就是代替CVS.互联网上非常多版本号控***务已从CVS转移到Subv ...
- ZH奶酪:纯CSS自定义Html中Checkbox复选框样式
原文链接:http://www.lrxin.com/archives-683.html 首先看下效果: 点击演示地址查看实例. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,之后我们会改变 ...
- Succession
Description The king in Utopia has died without an heir. Now several nobles in the country claim the ...
- 过滤器(web基础学习笔记二十一)
一.过滤器简介 二.在Eclipse中创建过滤器 三.使用过滤器设置全部web字符编码 public void doFilter(ServletRequest request, ServletResp ...