LibreOJ #119. 最短路 (堆优化dijkstra)
2024-10-19 19:33:01
题目描述
给一个 n(1≤2500≤n) n(1 \leq 2500 \leq n)n(1≤2500≤n) 个点 m(1≤6200≤m) m(1 \leq 6200 \leq m)m(1≤6200≤m) 条边的无向图,求 s ss 到 t tt 的最短路。
输入格式
第一行四个由空格隔开的整数 n nn、m mm、s ss、t tt。
之后的 m mm 行,每行三个正整数 si s_isi、ti t_iti、wi(1≤wi≤109) w_i(1 \leq w_i \leq 10 ^ 9)wi(1≤wi≤109),表示一条从 si s_isi 到 ti t_iti 长度为 wi w_iwi 的边。
输出格式
一个整数表示从 s ss 到 t tt 的最短路长度。数据保证至少存在一条道路。
样例
样例输入
7 11 5 4
2 4 2
1 4 3
7 2 2
3 4 3
5 7 5
7 3 3
6 1 1
6 3 4
2 4 3
5 6 3
7 2 1
样例输出
7
#include <ctype.h>
#include <cstring>
#include <cstdio>
#include <queue>
#define N 6205 using namespace std;
void read(int &x)
{
x=;
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) x=x*+ch-'',ch=getchar();
}
struct node
{
int next,to,dis;
}edge[N<<];
int head[N/],cnt,n,m,s,t,dis[N/];
bool visit[N/];
struct NODE
{
int x,y;
bool operator<(NODE a)const
{
return x>a.x;
}
};
priority_queue<NODE>q;
void add(int u,int v,int w)
{
edge[++cnt].next=head[u];
edge[cnt].to=v;
edge[cnt].dis=w;
head[u]=cnt;
}
int main()
{
read(n);read(m);read(s);read(t);
for(int si,ti,wi;m--;)
{
read(si);
read(ti);
read(wi);
add(si,ti,wi);
add(ti,si,wi);
}
memset(dis,,sizeof(dis));
dis[s]=;
NODE a;
a.x=dis[s];
a.y=s;
q.push(a);
while(!q.empty())
{
NODE a=q.top();
q.pop();
if(visit[a.x]) continue;
int v=a.y;
visit[v]=;
for(int i=head[v];i;i=edge[i].next)
{
if(dis[edge[i].to]>edge[i].dis+dis[v])
{
dis[edge[i].to]=edge[i].dis+dis[v];
NODE a;
a.x=dis[edge[i].to];
a.y=edge[i].to;
q.push(a);
}
}
}
printf("%d",dis[t]);
return ;
}
最新文章
- Java的输入方式总结
- undefined function openssl_x509_read
- JSTL 标签库 使用
- 【转】java反射详解
- hdu 5256 序列变换(LIS最长上升子序列)
- ibatis配置log4j输出sql日志信息
- [Oracle] CPU/PSU补丁安装教程
- 用Java制作一个简单的图片验证码
- [LeetCode] Inorder Successor in BST II 二叉搜索树中的中序后继节点之二
- runAllManagedModulesForAllRequests
- Java实现数据库与eclipse的连接
- Web版微信协议分析—版本2
- 3.4 C++名字隐藏
- mybatis 使用oracle merge into 语句踩坑实录
- chrome 字体太浅,如何设置
- java web文件下载功能实现 (转)
- python性能对比
- sublimeText3的一些操作记录
- mysql 闪回测试
- Esper——内存计算、事件驱动、SQL支持
热门文章
- Java类成员访问控制权限
- [Selenium] 操作新弹出窗口之验证标题和内容
- [laravel]要点
- 机器学习(2):简单线性回归 | 一元回归 | 损失计算 | MSE
- SCUT - 249 - A piece of Cake - 组合数学
- hdu2476【区间DP,未完待续】
- HDOJ1864(水的可怜)
- hdoj1465【错排公式(直接水过)】
- 树的直径初探+Luogu P3629 [APIO2010]巡逻【树的直径】By cellur925
- LuoguP2657 [SCOI2009]windy数 【数位dp】By cellur925