【板子】单源最短路
来源:互联网 发布:linux usleep 精度 编辑:程序博客网 时间:2024/05/13 04:50
传送门
单源最短路
Code
dijkstra版本
#include<queue>#include<cstdio>#define f first#define s second using namespace std;typedef pair<int,int> pii;const int inf = 2147483647;const int sn = 1e4+5;const int sm = 5e5+5;int n,m,st,tot;int hd[sn],d[sn];int to[sm],nxt[sm],w[sm];bool ex[sn]; priority_queue<pii,vector<pii>,greater<pii> >q;void Add(int a,int b,int c){ to[++tot]=b,w[tot]=c; nxt[tot]=hd[a],hd[a]=tot;}void Dijkstra(int a) { for(int i=1;i<=n;++i)d[i]=inf; d[a]=0,q.push(make_pair(d[a],a)); while(!q.empty()) { pii t=q.top();q.pop(); ex[t.s]=1; for(int i=hd[t.s];i;i=nxt[i]) if(!ex[to[i]]&&w[i]+d[t.s]<d[to[i]]) { d[to[i]]=w[i]+d[t.s]; q.push(make_pair(d[to[i]],to[i])); } }}int main() { scanf("%d%d%d",&n,&m,&st); for(int i=1,a,b,c;i<=m;++i) scanf("%d%d%d",&a,&b,&c),Add(a,b,c); Dijkstra(st); for(int i=1;i<=n;++i) printf("%d ",d[i]); printf("\n"); return 0;}
SPFA版本
#include<cstdio>using namespace std;const int sm = 1e4+5;const int sn = 5e5+5;const int inf = 2147483647;int N,M,Ct,St,head,tail;int Que[10000005];int dis[sm],ex[sm];int to[sn],nxt[sn],len[sn],hd[sm];void read(int &x) { char ch=getchar();x=0; while(ch>'9'||ch<'0') ch=getchar(); while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();}void Add(int u,int v,int w) { to[++Ct]=v,nxt[Ct]=hd[u],len[Ct]=w,hd[u]=Ct;}void SPFA(int x) { for(int i=1;i<=N;++i) dis[i]=inf; Que[tail++]=x,ex[x]=1,dis[x]=0; while(head<tail) { int k=Que[head++]; ex[k]=0; for(int i=hd[k];i;i=nxt[i]) if(dis[to[i]]>dis[k]+len[i]) { dis[to[i]]=dis[k]+len[i]; if(!ex[to[i]]) { Que[tail++]=to[i]; ex[to[i]]=1; } } }}int main() { read(N),read(M),read(St); for(int i=1,x,y,z;i<=M;++i) { read(x),read(y),read(z); Add(x,y,z); } SPFA(St); for(int i=1;i<=N;++i) printf("%d ",dis[i]); printf("\n"); return 0;}
最开始空间开反结果TLE了,汗~
阅读全文
0 0
- 【板子】单源最短路
- 最短路的一些板子
- 各种最短路的板子
- 拆点最短路( 新板子get
- poj 3255 Roadblocks(次短路板子题)
- 板子
- 板子
- 单源最短路
- 最短路之单源最短路
- 单源最短路算法HDU 2544 ( 最短路 )
- HDU 2544 - 最短路(单源最短路)
- HDU 2544 最短路 (单源最短路)
- 测试板子
- 板子总结
- 入手板子
- 新板子
- Ivus 板子
- dinic 板子
- Qt中添加include和libs的小例子,安装kdevelop
- 磁盘管理之inode与block
- 为什么你的 phpinfo() 无法显示(空白)
- Linux文件管理_1
- 我的同桌(右手边)
- 【板子】单源最短路
- 理解mysql_mysql主从原理及配置
- tensorflow版本API不兼容问题解决
- React框架脚手架配置
- BZOJ 3211-花神游历各国(线段树)
- 219. Contains Duplicate II
- pdfmake的使用以及对中文的支持
- 理解mysql_mybatis字段映射表
- 做很多事情都要的是毅力,调试几次终于AC,开心无以形容