poj3159 dijktstra+heap
来源:互联网 发布:机械图纸软件有哪些 编辑:程序博客网 时间:2024/06/15 18:02
dijkstra 复杂度n方,加上优先队列复杂度nlogn
dijkstra+heap 换模板改模板,希望这个模板能用吧。。。
两个结构体一个纪录点一个纪录边
#include <iostream>#include<stdio.h>#include<cstdlib>#include<math.h>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<set>#include<stack>using namespace std;#define mod 1000000007#define ll long long#define FOR(i,j,k) for(int i=j;i<=k;i++)const int inf=0x3f3f3f3f;const int N=30005;int n,m;struct node{ int id,val; node(int _id=0,int _val=0):id(_id),val(_val) {} bool operator < (const node & a) const { return val>a.val; }};struct Edge{ int v,next,w;};Edge edge[150005];int head[N],k;int vis[N];int d[N];void dijkstra(int start){ priority_queue <node> que; node temp; int u,v,w; for(int i=1;i<=n;i++) { d[i]=inf; vis[i]=0; } que.push(node(start,0)); d[start]=0; while(!que.empty()) { temp=que.top(); que.pop(); u=temp.id; if(vis[u]) continue; vis[u]=1; for(int i=head[u];i!=-1;i=edge[i].next) { v=edge[i].v; w=edge[i].w; if(d[v]>d[u]+w&&!vis[v]) { d[v]=d[u]+w; que.push(node(v,d[v])); } } }}void init(){ for(int i=1;i<=n;++i) head[i]=-1; k=0;}void addedge(int u,int v,int w){ edge[k].v=v; edge[k].w=w; edge[k].next=head[u]; head[u]=k++;}int main(){ scanf("%d %d",&n,&m); init(); int a,b,c; while(m--) { scanf("%d%d%d",&a,&b,&c); addedge(a,b,c); } dijkstra(1); printf("%d\n",d[n]); return 0;}
0 0
- poj3159 dijktstra+heap
- poj3159
- poj3159
- poj3159
- [poj3159]
- POJ3159 最大差距(差分约束系统 ,Dijkstra+Heap)
- poj3159 Candies
- poj3159 Candies
- poj3159 Candies
- 【poj3159】 Candies
- [POJ3159]candies
- POJ3159::SPFA
- poj3159——Candies
- poj3159(spfa+栈)
- poj3159(差分约束)
- POJ3159——Candies
- poj3159 Candies(SPFA+stack)
- poj3159(spfa)
- 2012年5月SAT香港真题解析
- 手机淘宝的flexible设计与实现
- C++学习之枚举
- 什么是hasLayout
- servlet 单实例多线程
- poj3159 dijktstra+heap
- 代码肉博客必读
- 一个 非常好的网站
- Android开发之WebService介绍
- Eclipse SVN插件的帐号、密码修改
- 进入TP-Link路由器之后利用快捷键F12查看星号路由密码的方法
- 诊断 Java 代码: 轻松掌握 Java 泛型
- windows环境下JAVA+GDAL配置
- KMP算法