Dijkstra
来源:互联网 发布:今日头条 大数据 编辑:程序博客网 时间:2024/06/06 01:21
#include<cstdio>#include<queue>#include<string>#include<sstream>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int INF = 1000000000;const int maxn = 100010; struct Edge{int from, to, dist;Edge(int u, int v, int d) : from(u), to(v), dist(d) {}};vector<Edge> edges;vector<int> G[maxn];bool done[maxn];int d[maxn];int n, m;void init(){freopen("practicein.txt","r",stdin);freopen("practiceout.txt","w",stdout);}void readdata(){cin >> n >> m;int u, v, w;for(int i = 0; i < m; i++){cin >> u >> v >> w;edges.push_back(Edge(u, v, w));G[u].push_back(i);}}struct heapnode{int d, u;bool operator < (const heapnode& rhs) const{return d > rhs.d;}};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;q.push((heapnode){d[e.to],e.to});}}}}void work(){int s;dijkstra(s);}int main(){init();readdata();work();return 0;}
0 0
- dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- DIJKSTRA
- DIJKSTRA
- Dijkstra
- dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- Dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- Dijkstra
- dijkstra
- Dijkstra
- 解决ubuntu sogou输入法不能用的问题
- Kruskal
- [LeetCode]16. 3Sum Closest
- jpa使用oracle序列
- 拯救OIBH总部
- Dijkstra
- yarn
- leetcode146~LRU Cache
- Linux常用文本编辑器
- spfa
- iOS 播放远程网络音乐的核心技术点
- USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)
- OpenGL,OpenCL,OpenAL,OpenMp,Opengles,WebGL,OpenVG 概念
- bzoj 1585 && 洛谷 2932 【usaco】Earthquake Damage 2&&1