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. ...
随机推荐
- ngx_lua实现登录逻辑
最近在公司做一个简单的portal,本来很简单的,只用ngx_lua就可以实现所有的业务逻辑,不需要upstream上游服务.但被要求接入公司内部的用户校验系统,说白了就是一个登录过程,只允许公司内部 ...
- HDU 4864 Task(贪心)
HDU 4864 Task 题目链接 题意:有一些机器和一些任务.都有时间和等级,机器能做任务的条件为时间等级都大于等于任务.而且一个任务仅仅能被一个机器做.如今求最大能完毕任务.而且保证金钱尽量多 ...
- 使用WPF来创建 Metro UI
当我第一次运行Zune时,我为这些美丽的UI所折服.当时就说这肯定不是用WPF做的,因为这些字体是如此的清晰而且UI反映的也非常快速..而且我从维基百科上也了解到Zune的第一个版本是2006年发布的 ...
- Android之属性动画(二)
上一篇文章(链接:http://www.cnblogs.com/jerehedu/p/4458928.html ),我们对属性动画有了简单的认识,并实际动手使用ObjectAnimator.Anim ...
- Android网络缓存的实现思路
在开发群里有多位同学问到了关于Android中网络缓存的问题.事实上不管是Android还是iOS,缓存的大致思路都是同样的,以下就几种情况下的缓存做一个大致的介绍.顺便说一下有些开源的网络请求框架已 ...
- [Angular-Scaled web] 2. Architecture sub-modules
Common models will be a sub models for category and bookmarks. Because they are used everywhere. For ...
- Nginx启用ssl以及免费证书申请
主要是这个东西,折腾了我两天,所以记录下来. 最开始是在meteor下面调用一个webservice,但是发现meteor项目的发布环境时https,所以请求的webservice也必须时webser ...
- Hibernate生成实体类-手工写法(一)
BaseDao package com.pb.dao; import java.sql.Connection; import java.sql.DriverManager; import java.s ...
- vue 项目的开发流程
1.$ node -v (检测node版本,node版本需要在 V4 以上) 2.全局安装vue $ npm install -g vue 3.安装脚手架 $ npm install -g vue-c ...
- eclipse手动指定启动的jdk版本
在eclipse.ini中添加 -vm D:/wwjDocument/JDK6/jre/bin/client/jvm.dll -vmargs -Dosgi.requiredJavaVersion=1. ...