Dijkstra(最短路求解)
2024-10-15 15:52:54
Dijkstra(最短路求解)
模板:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int maxn = 2005;
const int INF = 0x3f3f3f3f;
struct Edge{
int u,v,next;
LL w;
bool operator < (const Edge & a)const
{
return w > a.w;
}
}edge[maxn<<1] ;
int tot = 0,head[maxn];
bool vis[maxn];
LL dis[maxn];
void addedge(int u,int v,LL w)
{
edge[tot] = (Edge){u,v,head[u],w
};
head[u] = tot++;
}
void Dijkstra()
{
priority_queue<Edge>que;
Edge p;
memset(dis,INF,sizeof(dis));
memset(vis,false,sizeof(vis));
p.v = 1;
que.push(p);
dis[1] = 0;
while (!que.empty())
{
p = que.top();
que.pop();
int u = p.v;
if (vis[u]) continue;
vis[u] = true;
for (int i = head[u];i != -1;i = edge[i].next)
{
int v = edge[i].v;
if (dis[u] + edge[i].w < dis[v])
{
dis[v] = dis[u] + edge[i].w;
p.u = u,p.v = v,p.w = dis[v];
que.push(p);
}
}
}
}
int main()
{
//freopen("input.txt","r",stdin);
int T,N,u,v;
LL w;
memset(head,-1,sizeof(head));
scanf("%d%d",&T,&N);
for (int i = 0;i < T;i++)
{
scanf("%d%d%I64d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
}
Dijkstra();
printf("%I64d\n",dis[N]);
return 0;
}
最新文章
- XPath Axes(轴)
- Epic - Desirable Number
- 引擎设计跟踪(九.9) 文件包系统(Game Package System)
- __asm__ __volatile__(";";: : :";memory";);
- Dalvik字节码的类型,方法与字段表示方法
- C# 操作 Word 修改word的高级属性中的自定义属性2
- JS外链
- Paxos 算法
- Oracle编码
- Must practice programming questions in all languages
- JMeter&#160;扩展JMeter插件获取更多监听器
- C# 重启程序本身
- top 内存mem的used很高,或者100%
- DeployMan,发布文件的利器
- 逆序对__归并排序__树状数组 Inversions SGU - 180
- Gulp 笔记
- 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析
- 网络配置vlan
- MariaDB Galera Cluster的配置测试
- 20145229吴姗珊逆向BOF实践
热门文章
- DispatcherServlet源码注解分析
- Netty 启动过程源码分析 (本文超长慎读)(基于4.1.23)
- 并发编程 —— Java 内存模型总结图
- 在MVC应用程序中,怎样删除上传的文件
- sqlserver查询连续签到天数
- JAVA动态代理基础
- C++ 的那些坑 (Day 0)
- python学习之老男孩python全栈第九期_day002作业
- 分页插件 jquery.pagination.js
- 5月9日——vue渲染过程中{{xxx}}显示