hdu 2544 最短路
来源:互联网 发布:达内软件培训班 编辑:程序博客网 时间:2024/06/14 04:13
这道题用来测试优先队列优化
首先是最普通的dijkstra
//http://acm.hdu.edu.cn/showproblem.php?pid=2544#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <string.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn=105;int n,m;int dis[maxn][maxn];bool vis[maxn];int d[maxn];int a,b,c;void dijkstra(){ memset(d,0x3f,sizeof(d)); memset (vis,false ,sizeof(vis)); d[1]=0; for(int i=1;i<=n;i++) { int minn=INF; int k=-1; for(int j=1;j<=n;j++) if(!vis[j]&&minn>d[j]) minn=d[k=j]; if(k==-1) break; vis[k]=true; for(int j=1;j<=n;j++) if(!vis[j]&&d[j]>d[k]+dis[k][j]) d[j]=d[k]+dis[k][j]; } cout<<d[n]<<endl;}int main(){ //freopen("input.txt","r",stdin); while(cin>>n>>m,n) { memset(dis,0x3f,sizeof(dis)); for(int i=1;i<=m;i++) { cin>>a>>b>>c; if(c<dis[a][b]) dis[a][b]=dis[b][a]=c; } dijkstra(); } return 0;}
然后是优先队列的优化。。。 储存图的方式仍然是矩阵存法。。。
#include <cstdio>#include <iostream>#include <cmath>#include <string>#include <cstring>#include <cstdlib>#include <algorithm>#include <stack>#include <map>#include <set>#include <vector>#include <queue>#define ll long longusing namespace std;const int INF = 0x3f3f3f3f;const int maxn = 102;int g[maxn][maxn];int vis[maxn];int d[maxn];int a,b,c;int n,m;typedef pair <int ,int> pii;void dijkstra(int s){memset(d,0x3f,sizeof(d)); memset (vis,false ,sizeof(vis)); d[1]=0; priority_queue <pii,vector<pii>,greater<pii> >q; q.push(make_pair(d[1],1)); while(!q.empty()) { pii t=q.top(); q.pop(); int now=t.second; if(vis[now]) continue; vis[now]=true; for(int j=1;j<=n;j++) if(!vis[j]&&g[now][j]<INF&&d[j]>d[now]+g[now][j]) d[j]=d[now]+g[now][j], q.push(make_pair(d[j],j)); } cout<<d[n]<<endl;}int main(){ //freopen("input.txt","r",stdin); while(cin>>n>>m,n) { memset(g,0x3f,sizeof(g)); for(int i=1;i<=m;i++) { cin>>a>>b>>c; if(c<g[a][b]) g[a][b]=g[b][a]=c; } dijkstra(1); } return 0;}
这道题数据不是很多,,优化效果还不是很明显的。。
0 0
- 最短路 2544hdu
- HDU 2544 最短路
- HDU-2544 最短路
- Hdu-2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 ( 最短路 )
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路
- JAVA语言读书笔记-多线程
- php的过滤函数
- 三角形类
- 怎样根据结构成员的地址找到结构体的地址(list_entry)
- python web框架 - Django
- hdu 2544 最短路
- Linux学习之例行性工作
- onItemSeleted 获得当前position对应的item内容
- Re: What is an endpoint?
- android生命周期(详细总结)
- 新浪微博接口自动生成+Qt封装
- 皮尔逊积矩相关系数的学习
- 亲密关系恐惧症
- python中单,双引号和三个双引号的区别