(Realx dijkstra1.1)POJ 1797 Heavy Transportation(使用dijkstra来解决最大生成树问题)
来源:互联网 发布:大数据集群服务器配置 编辑:程序博客网 时间:2024/04/29 06:48
题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量
解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了
#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int maxn = 1100;const int inf = -10000000;//***这是使用dijkstra来解决最大生成树是需要改的地方.1)int map[maxn][maxn];int d[maxn];int s[maxn];int n, m;/** * dijkstra算法用于有向加权图的最短路径问题 * * 有一个大神总结的很好(至少我个人比较赞同..): * 用最小生成树算法来求最小边权和 * 用dijkstra算法将所有的最小值都存起来 */int dijkstra(int v) { //选择v作为源节点,利用dijkstra算法计算源节点v到各节点的最短路径int i;for (i = 1; i <= n; ++i) { //初始化s[i] = 0; //s[i] = 0,表示i节点未被访问过d[i] = map[v][i]; //将d[i]定义为源节点v到节点i的最短距离}int j;for (i = 1; i < n; ++i) {//这里< 或者是 <= 都会ACint mmin = inf;int pos;for (j = 1; j <= n; ++j) {if (!s[j] && mmin < d[j]) {//***这是使用dijkstra来解决最大生成树是需要改的地方.2)pos = j;mmin = d[j];}}s[pos] = 1;for (j = 1; j <= n; ++j) {if (!s[j] && (d[j]<min(d[pos],map[pos][j]))) {//***这是使用dijkstra来解决最大生成树是需要改的地方..3)d[j] = min(d[pos],map[pos][j]);}}}return d[n]; //返回所要求的源节点到n节点的最短路径}int main() {int t;scanf("%d", &t);int counter = 1;while (t--) {scanf("%d%d", &n, &m);memset(map, 0, sizeof(map));int i;for (i = 1; i <= m; ++i) {int a, b, c;scanf("%d%d%d", &a, &b, &c);map[a][b] = map[b][a] = c;}printf("Scenario #%d:\n", counter++);printf("%d\n\n", dijkstra(1));}return 0;}
- (Realx dijkstra1.1)POJ 1797 Heavy Transportation(使用dijkstra来解决最大生成树问题)
- (Relax dijkstra1.2)POJ 2263 Heavy Cargo(使用dijkstra来求解最大生成树问题)
- poj 1797 Heavy transportation最大生成树
- POJ 1797 Heavy Transportation(最大生成树)
- poj 1797 Heavy Transportation 最小生成树 最大生成树
- POJ 1797 Heavy Transportation (Prime 最大生成树)
- poj 1797 Heavy Transportation(最大生成树)
- POJ - 1797 Heavy Transportation(求“最大生成树”)
- POJ 1797 Heavy Transportation(最大生成树-Prim)
- POJ 1797 Heavy Transportation 【最大生成树,Prime】
- POJ 1797 Heavy Transportation(最大生成树)
- POJ 1797 Heavy Transportation(最大生成树)
- POJ 1797 Heavy Transportation 【dijkstra】
- poj 1797 Heavy Transportation(dijkstra)
- POJ - 1797----Heavy Transportation(Dijkstra)
- POJ1797-Heavy Transportation(Dijkstra 变式& 最大生成树)
- POJ-1797Heavy Transportation (最小生成树问题)
- POJ 1791 Heavy Transportation(最大生成树)
- ARM平台下bl和ldr指令的区别
- Java学习系列(十五)Java面向对象之细谈线程、线程通信(下)
- 一个前辈写的网络协议学习方法
- JAVA6道基础问题
- Uva12097 Pie
- (Realx dijkstra1.1)POJ 1797 Heavy Transportation(使用dijkstra来解决最大生成树问题)
- Sublime Text 2 C++编译运行简单配置
- js网页内容抓取分析
- 国嵌——内核驱动——第二天(kset)
- 字符串常量
- 一些基础的JAVA知识
- VC2010 大工程清理
- 如何用android 画出三角形
- C++中有了malloc/free 为什么还要new/delete