大白-Dijksta模板
来源:互联网 发布:js清空数组中所有元素 编辑:程序博客网 时间:2024/04/26 00:12
这个模板更加直观。
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<vector>#include<queue>#include<cmath>typedef long long ll;using namespace std;#define T 555#define maxn 123#define inf 0x3f3f3f3fstruct Edge{int from,to,dist;Edge(){}Edge(int _1,int _2,int _3):from(_1),to(_2),dist(_3){}};struct HeapNode{int d,u;HeapNode(){}HeapNode(int _1,int _2):d(_1),u(_2){}bool operator<(const HeapNode& rhs)const{return d>rhs.d;}};struct Dijkstra{int n,m;vector<Edge> edges;vector<int> G[maxn];bool done[maxn];int d[maxn];int p[maxn];void init(int n){this->n = n;for(int i=0;i<n;++i)G[i].clear();edges.clear();}void AddEdge(int from,int to,int dist){edges.push_back(Edge(from,to,dist));m = edges.size();G[from].push_back(m-1);}void dijkstra(int s){priority_queue<HeapNode> Q;for(int i=0;i<n;++i)d[i] = inf;d[s] = 0;memset(done,0,sizeof(done));Q.push(HeapNode(0,s));while(!Q.empty()){HeapNode x = Q.top();Q.pop();int u = x.u;if(done[u])continue;done[u] = true;for(int i=0;i<G[u].size();++i){Edge& e = edges[G[u][i]];if(d[e.to]>d[u]+e.dist){d[e.to] = d[u] + e.dist;p[e.to] = G[u][i];Q.push(HeapNode(d[e.to],e.to));}}}}};
0 0
- 大白-Dijksta模板
- 大白二维计算几何模板
- 计算几何模板 - 大白书
- 大白上的treap模板
- 大白
- Hduoj2680【dijksta】
- 计算几何模板(仿照刘汝佳大白书风格)
- 《训练指南》大白 二维几何基础 基本公式(模板)
- Dijksta算法原理
- treap 模板(照着大白抄的。。应该基本没错吧。。)
- 大白象?
- 大白电话亭
- 全能大白
- POJ2394 dijksta||spfa求最短路
- poj 2502 Subway (最短路 Dijksta)
- 怎样才能做一个大白?
- svg画大白
- 大白书DP习题
- zzulioj 1783: 简单的求和 (筛选求和) 求和预处理 好题
- HDU 1008-Elevator
- HDU 5569 长度为n的上升子序列个数d (大数模板+DP)
- QTime中currentTime()的使用方法
- 前序遍历的层号表示转孩子数组表示法
- 大白-Dijksta模板
- 线索二叉树
- 《Go语言入门》如何在Windows下安装Go语言编程环境
- QT5与之前版本间问题整理
- 解析错误:解析软件包时出现问题
- Android应用内语言切换实现
- HDU1877-又一版 A+B
- 杭电ACM1162(prim)
- Assets目录下的文件大小是否有限制?