二次联通门 : LibreOJ #119. 最短路

/*
LibreOJ #119. 最短路 堆优化的Dijkstra */
#include <cstring>
#include <cstdio>
#include <queue> #define Max 6000 void read (int &now)
{
now = ;
register char word = getchar ();
while (word < '' || word > '')
word = getchar ();
while (word >= '' && word <= '')
{
now = now * + word - '';
word = getchar ();
}
} struct Data
{
int Id;
int dis; bool operator < (const Data &now) const
{
return this->dis > now.dis;
} Data (int __Id, int __dis) : Id (__Id), dis (__dis) {}; Data () {};
}; class Dijkstra_Type
{ private : int __to[Max << ], __next[Max << ];
int __dis[Max << ]; int Edge_Count;
int edge_list[Max];
bool visit[Max]; int dis[Max]; public : void Insert_edge (int from, int to, int dis)
{
Edge_Count ++; __to[Edge_Count] = to;
__next[Edge_Count] = edge_list[from];
edge_list[from] = Edge_Count; Edge_Count ++; __to[Edge_Count] = from;
__next[Edge_Count] = edge_list[to];
edge_list[to] = Edge_Count; __dis[Edge_Count] = __dis[Edge_Count - ] = dis;
} int Dijkstra (int Start, int End)
{
std :: priority_queue <Data> Queue; memset (dis, 0x3f, sizeof dis); Data now ; for (Queue.push (Data (Start, )), dis[Start] = ; !Queue.empty (); Queue.pop ())
{
now = Queue.top (); if (visit[now.Id])
continue; visit[now.Id] = true; for (int i = edge_list[now.Id]; i; i = __next[i]) if (dis[__to[i]] > dis[now.Id] + __dis[i])
{
dis[__to[i]] = dis[now.Id] + __dis[i];
Queue.push (Data (__to[i], dis[__to[i]]));
}
}
return dis[End];
}
}; Dijkstra_Type Make; int main (int argc, char *argv[])
{
int N, M;
int x, y, z; int S, T;
for (read (N), read (M), read (S), read (T); M --; )
{
read (x);
read (y);
read (z); Make.Insert_edge (x, y, z);
} printf ("%d", Make.Dijkstra (S, T)); return ;
}

最新文章

  1. 使用setTimeout模拟setInterval效果
  2. uva 12034
  3. windows下R语言在终端的运行
  4. 2.2 编程之美--不要被阶乘吓到[zero count of N factorial]
  5. SQL查看表锁定,死锁解锁
  6. linux- svn服务器
  7. 【BZOJ2752】【线段树】高速公路
  8. Map.containsKey方法——判断Map集合对象中是否包含指定的键名
  9. PEP8 - Python编码规范
  10. servlet 会话管理
  11. pyinstaller打包程序 带图片
  12. Sql Server 数据库作业备份
  13. 条件随机场之CRF++源码详解-开篇
  14. jsoi2018 R1R2
  15. Entity Framework Core
  16. Kaptcha
  17. openssl 生成证书
  18. 【Unity】9.1 导入粒子系统组件
  19. js解码编码decodeURI与decodeURIComponent区别
  20. 常用mysql text 类型,varchar最大长度

热门文章

  1. Django之ORM相关操作
  2. c++学习---const 和 string
  3. Q-Dir
  4. Postman如何进行参数化
  5. 嵌套的页面——自适应高度与跨越操作DOM
  6. hadoop之yarn详解(命令篇)
  7. 《python解释器源码剖析》第13章--python虚拟机中的类机制
  8. MySQL菜鸟入门“秘籍”
  9. Web Api 创建及其使用
  10. docker从入门到精通再到放弃