博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2544 dijkstra
阅读量:4154 次
发布时间:2019-05-25

本文共 1263 字,大约阅读时间需要 4 分钟。

链接矩阵+优先队列

#include 
#include
#include
#include
#include
#include
using namespace std;const int maxNodes = 102;int g[maxNodes][maxNodes];int pre[maxNodes];int cost[maxNodes];int maxInt = numeric_limits
::max();int N = 101;int M = 10001;class Node{ public: int m_id; int m_distance; Node(int id,int disc):m_id(id),m_distance(disc){} friend bool operator < (const Node &a,const Node &b)//从小到大排序 { return a.m_distance >b.m_distance; }};int Dijkstra()//起始点是1,结束点是N,返回1-->N的最小值;点与点之间没有连接设为0,这个设置不合适,应该设为正无穷{ memset(pre,-1,sizeof(pre)); cost[1] = 0; for(int i=2;i<=N;++i) cost[i] = maxInt; set
s; priority_queue
q; q.push(Node(1,0));//只要压入起始点即可 while (!q.empty()) { Node node = q.top(); q.pop(); if(s.find(node.m_id)!=s.end())//因为可能会把一个点多次压入队列中,但是弹出到S中的就是最小距离的,以后再弹出这个点就不再处理 continue; s.insert(node.m_id); int curr = node.m_id; for (int i=1;i<=N;++i) { if (g[curr][i]>0 && s.find(i)==s.end()) { if(cost[i] >(cost[curr] + g[curr][i])) { cost[i] = cost[curr] + g[curr][i]; q.push(Node(i,cost[i]));//i结点可能是重复插入到队列中 } } } } return cost[N];}int main(){ while (scanf("%d%d",&N,&M)!=EOF) { if(N==0 && M==0) break; memset(g,0,sizeof(g)); for (int i=0;i
>row>>col>>val; g[row][col] = val; g[col][row] = val; } cout<
<

转载地址:http://mbeti.baihongyu.com/

你可能感兴趣的文章
Commit our mod to our own repo server
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Netconsole to capture the log
查看>>
Build GingerBread on 32 bit machine.
查看>>
How to make SD Card world wide writable
查看>>
Detecting Memory Leaks in Kernel
查看>>
Linux initial RAM disk (initrd) overview
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
基于S5PV210的uboot移植中遇到的若干问题记录(一)DM9000网卡移植
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>