本文主要是介绍最短路-Dijkstra 配题(HDU 3665),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一种单源最短路算法,只能用于边权为正的图中。
该算法的思想非常简单,在某一时刻,整个图的点被分为两个部分:
第一部分:包含源点,已经知道了这部分中其它点到达源点的最短距离。
第二部分:知道了该部分所有的点到达第一部分中的点的最近距离。
在该算法中可以使用优先队列进行优化,代替原有的暴力FOR循环。
题目:HDU 3665(题意简单)
思想:从0点出发,求出到达所有海边城市的最短路,然后选择出最短的一个作为输出即可。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
const int max_N = 11;
const int INF = 1000000;
bool seaside[max_N];
int N;
struct NODE
{int node;int w;int distance;
};
struct cmp
{bool operator() (const NODE& a, const NODE& b){return a.distance > b.distance;}
};
vector<NODE>graph[max_N];int dijkstra(int source)
{int dis[max_N];struct NODE cur_node, next_node;priority_queue<NODE, vector<NODE>, cmp>Q;while (!Q.empty()) Q.pop();for (int
这篇关于最短路-Dijkstra 配题(HDU 3665)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!