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;
}

最新文章

  1. XPath Axes(轴)
  2. Epic - Desirable Number
  3. 引擎设计跟踪(九.9) 文件包系统(Game Package System)
  4. __asm__ __volatile__(&quot;&quot;: : :&quot;memory&quot;);
  5. Dalvik字节码的类型,方法与字段表示方法
  6. C# 操作 Word 修改word的高级属性中的自定义属性2
  7. JS外链
  8. Paxos 算法
  9. Oracle编码
  10. Must practice programming questions in all languages
  11. JMeter&#160;扩展JMeter插件获取更多监听器
  12. C# 重启程序本身
  13. top 内存mem的used很高,或者100%
  14. DeployMan,发布文件的利器
  15. 逆序对__归并排序__树状数组 Inversions SGU - 180
  16. Gulp 笔记
  17. 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析
  18. 网络配置vlan
  19. MariaDB Galera Cluster的配置测试
  20. 20145229吴姗珊逆向BOF实践

热门文章

  1. DispatcherServlet源码注解分析
  2. Netty 启动过程源码分析 (本文超长慎读)(基于4.1.23)
  3. 并发编程 —— Java 内存模型总结图
  4. 在MVC应用程序中,怎样删除上传的文件
  5. sqlserver查询连续签到天数
  6. JAVA动态代理基础
  7. C++ 的那些坑 (Day 0)
  8. python学习之老男孩python全栈第九期_day002作业
  9. 分页插件 jquery.pagination.js
  10. 5月9日——vue渲染过程中{{xxx}}显示