洛谷 P4779 单源最短路径(标准版) 题解
2024-10-19 21:15:23
这道题就是标准的堆优化dijkstra;
注意堆优化的dijkstra在出队时判断vis,而不是在更新时判断vis
#include <bits/stdc++.h>
using namespace std;
int n,m,s;
struct littlestar{
int to;
int nxt;
int w;
}star[];
int head[],cnt;
void add(int u,int v,int w)
{
star[++cnt].to=v;
star[cnt].w=w;
star[cnt].nxt=head[u];
head[u]=cnt;
}
int dis[],vis[];
priority_queue<pair<int,int> > q;
void dijkstra(int u)
{
memset(dis,0x3f,sizeof(dis));
dis[u]=;
q.push(make_pair(,u));
while(q.size())
{
int x=q.top().second;
q.pop();
if(vis[x]) continue;
vis[x]=;
for(int i=head[x];i;i=star[i].nxt){
int v=star[i].to;
if(dis[v]>dis[x]+star[i].w){
dis[v]=dis[x]+star[i].w;
q.push(make_pair(-dis[v],v));
}
}
}
}
int main ()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=;i<=m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
dijkstra(s);
for(int i=;i<=n;i++){
cout<<dis[i]<<" ";
}
}
最新文章
- 事件分发时候的onTouchEvent,onInterceptTouchEvent,dispatchTouchEvent调用顺序
- css sprite,css雪碧图生成工具V3.0更新
- android自动获取短信验证码
- JS~~~ 前端开发一些常用技巧 模块化结构 &;&;&;&;&; 命名空间处理 奇技淫巧!!!!!!
- 网站推广优化(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)
- 山东省第五届ACM省赛
- ASP .NET下的301重定向如何做
- Linux多线程之同步
- 【阿里云产品公测】在Laravel4框架中使用阿里云ACE的缓存服务
- 用GDB排查Python程序故障
- Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
- 获取GET/POST提交的数据,并处理中文问题
- ODI11G 在Linux上的安装配置
- poj1797(最短路小变形)
- Atom编辑器之加快React开发的插件汇总
- JMM内存管理
- Javascript日期类型的妙用
- python-基于UDP通信的套接字,socketserver模块的使用
- ElasticSearch集群介绍二
- puppet 用户和组资源管理