最短路
2016-07-25 13:10
176 查看
//dijkstra #include<queue> #include<cstring> using namespace std; const int MAXN = 100; const int MAXM = 10000; //////////////////////////////////////////////// struct dij_edge{ int from, to, next, val; }dij_e[MAXM]; struct Node{ int x, d; Node(){} Node( int a, int b ): x( a ), d( b ){} bool operator < ( Node a ) const{ return d > a.d; } }; int dij_h[MAXN], dij_dis[MAXN], dij_cnt; void dij_init(){ dij_cnt = 0; memset( dij_h, -1, sizeof( dij_h ) ); } void dij_add( int from, int to, int val ){ dij_e[dij_cnt].from = from; dij_e[dij_cnt].to = to; dij_e[dij_cnt].val = val; dij_e[dij_cnt].next = dij_h[from]; dij_h[from] = dij_cnt++; } void dij( dij_edge *edge, int *dis, int *h, int s ){ dis[s] = 0; priority_queue<Node> Q; Q.push( Node( s, dis[s] ) ); while( !Q.empty() ){ Node temp = Q.top(); Q.pop(); int x = temp.x; if( temp.d > dis[x] ) continue; for( int k = h[x]; k != -1; k = edge[k].next ){ int y = edge[k].to; if( dis[y] > dis[x] + edge[k].val ){ dis[y] = dis[x] + edge[k].val; Q.push( Node( y, dis[y] ) ); } } } } //dij( dij_e, dij_dis, dij_h, source ); int main(){ return 0; }
相关文章推荐
- redis之主从以及sentinel的创建
- Docker 常用命令
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
- 《计算机图形学》2.1.7 立体感和虚拟现实系统
- CentOS操作系统版本信息查看和隐藏
- 调试PURGEOLDEXTRACTS
- Canvas 大师之路
- 动态规划日常练习1
- hibernate检索的使用
- oracle drop table(表)数据恢复方法
- Android基础总结(6)——内容提供器
- 求凸包(两遍扫描,求上下凸包的方法)
- 关于数组的一个例子
- js中替换字符串
- JetBrains 的产品集成 GIT 的设置方法
- C语言的关键字用法
- PhpExcel中文帮助手册|PhpExcel使用方法
- Mysql源码安装
- 两个队列实现一个栈
- 音视频传输基本知识及总体思路