博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dijkstra模板
阅读量:6485 次
发布时间:2019-06-23

本文共 1940 字,大约阅读时间需要 6 分钟。

1 #include 
2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 #define Dow(i,j,k) for(int i=j;i>=k;i--) 4 #define LL long long 5 using namespace std ; 6 inline int read() { 7 int x = 0, f = 1; 8 char ch = getchar(); 9 while(ch<'0'||ch>'9') { if(ch=='-') f = -1; ch = getchar(); }10 while(ch>='0'&&ch<='9') { x = x * 10+ch-48; ch = getchar(); }11 return x * f;12 }13 inline void write(LL x) {14 if( x < 0 ) putchar('-');15 if( x > 9 ) write(x/10);16 putchar(x%10+48);17 }18 const int N = 10011, M = 500011; 19 const LL INF = 1e16; 20 int n, m, S, nedge; 21 int head[N], vis[N];22 LL dist[N]; 23 struct edge{24 int to, pre, val; 25 }e[M];26 struct node{27 int id; 28 LL val; 29 friend bool operator <(node a, node b) {30 return a.val > b.val; 31 }32 };33 priority_queue
Q; 34 inline void add(int x, int y, int v) {35 e[++nedge] = (edge){y, head[x], v};36 head[x] = nedge; 37 }38 void Dijkstra(int S) {39 For(i, 0, n) dist[i] = INF; 40 For(i, 0, n) vis[i] = 0; 41 dist[S] = 0; 42 while(!Q.empty()) Q.pop(); 43 44 Q.push((node){S, 0}); 45 while(!Q.empty()) {46 node p = Q.top(); Q.pop(); 47 int u = p.id; 48 if(vis[u]) continue; 49 vis[u] = 1; 50 for(int i=head[u]; i; i=e[i].pre) { 51 int v = e[i].to; 52 if(dist[u]+e[i].val < dist[v]) {53 dist[v] = dist[u]+e[i].val; 54 Q.push((node){v, dist[v]}); 55 }56 }57 }58 } 59 60 int main() {61 n = read(); m = read(); S = read(); 62 For(i, 1, m) {63 int x=read(), y=read(), v=read();64 add(x, y, v); 65 } 66 Dijkstra(S);67 For(i, 1, n) 68 if(dist[i] != INF) write(dist[i]), putchar(' '); 69 else printf("2147483647 "); 70 return 0; 71 }

 

转载于:https://www.cnblogs.com/third2333/p/8445482.html

你可能感兴趣的文章
Java二进制指令代码解析
查看>>
我的Python学习记录
查看>>
quzatz --Could not load org.quartz.spi.Trigge...
查看>>
qml实现窗口的拖拽效果
查看>>
Centos安装Mysql
查看>>
android Looper 非UI线程中更新UI
查看>>
js if语句多个条件判断
查看>>
AVPacketList结构体和AVPacketQueue结构体
查看>>
PHP操作redis详细讲解
查看>>
Android学习笔记(一)
查看>>
Java 提高篇(一)
查看>>
虚拟化学习笔记
查看>>
浏览器的兼容性问题
查看>>
我的友情链接
查看>>
今天真的搬走了
查看>>
PC散热风扇之研究一:风扇种类介绍
查看>>
关于Session和Cookie简单实例
查看>>
App框架实现———dagger2
查看>>
zabbix 微信报警
查看>>
rsync命令参数及SSH自定义端口远程拷贝
查看>>