热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

POJ2263:HeavyCargo最大载重问题

POJ2263是一个经典的图论问题,涉及寻找从起点到终点的最大载重路径。本文将详细介绍该问题的背景、解题思路及代码实现。

题目链接:http://poj.org/problem?id=2263

问题描述:给定一个无向图,每条边有一个最大载重量。求从起点到终点的最大载重路径。

#include
#include
#include
#include
#include
#define N 202
using namespace std;

int gra[N][N], dis[N], vis[N], n;

void dijkstra(int beg, int end) {
    int i, j, k, temp, m;
    for (i = 1; i <= n; i++) {
        dis[i] = gra[beg][i];
        vis[i] = false;
    }
    vis[beg] = true;
    for (i = 2; i <= n; i++) {
        k = 0;
        temp = 0;
        for (j = 1; j <= n; j++) {
            if (!vis[j] && dis[j] > temp) {
                temp = dis[j];
                k = j;
            }
        }
        if (k == end) {
            printf("%d tons\n", temp);
            return;
        }
        vis[k] = true;
        for (j = 1; j <= n; j++) {
            if (!vis[j]) {
                m = min(temp, gra[k][j]);
                if (m > dis[j])
                    dis[j] = m;
            }
        }
    }
}

int main() {
    int i, j, k, m, h, count = 1;
    string s1, s2;
    map mp;
    while (scanf("%d%d", &n, &m), n || m) {
        k = 1;
        for (i = 1; i <= n; i++)
            for (j = 1; j <= n; j++)
                gra[i][j] = 0;
        while (m--) {
            cin >> s1 >> s2 >> h;
            if (mp.find(s1) == mp.end())
                mp[s1] = k++;
            if (mp.find(s2) == mp.end())
                mp[s2] = k++;
            i = mp[s1];
            j = mp[s2];
            if (h > gra[i][j])
                gra[i][j] = gra[j][i] = h;
        }
        cin >> s1 >> s2;
        printf("Scenario #%d\n", count++);
        dijkstra(mp[s1], mp[s2]);
        printf("\n");
    }
    return 0;
}

参考链接:https://www.cnblogs.com/YogurtShen/archive/2012/08/30/2664306.html


推荐阅读
  • 本题要求计算给定两个正整数a和b时,2的-a次方与2的-b次方之和,并将结果以最简分数形式表示。输入包括多组测试数据,每组数据包含两个在2到20范围内的整数。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
  • 本文介绍了如何使用JFreeChart库创建一个美观且功能丰富的环形图。通过设置主题、字体和颜色等属性,可以生成符合特定需求的图表。 ... [详细]
  • 掌握Mosek矩阵运算,轻松应对优化挑战
    本篇文章继续深入探讨Mosek学习笔记系列,特别是矩阵运算部分,这对于优化问题的解决至关重要。通过本文,您将了解到如何高效地使用Mosek进行矩阵初始化、线性代数运算及约束域的设定。 ... [详细]
  • 本文详细介绍了JSP(Java Server Pages)的九大内置对象及其功能,探讨了JSP与Servlet之间的关系及差异,并提供了实际编码示例。此外,还讨论了网页开发中常见的编码转换问题以及JSP的两种页面跳转方式。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 在使用MFC进行项目开发时,可能会遇到编译错误C2244,提示函数定义与现有声明不匹配。本文将详细介绍这一错误的原因及解决方案。 ... [详细]
  • 本文详细解析了2019年西安邀请赛中的一道树形动态规划题目——J题《And And And》。题目要求计算树中所有子路径异或值为0的集合数量,通过深入分析和算法优化,提供了高效的解决方案。 ... [详细]
  • matlab gamma函数_MATLAB做晶体结构图(固体物理)
    写在前面最近在复习考研复试《固体物理》这一门课,去年学的内容已经忘干净了,所以就翻开前几页。突然看到了面心立方和体心立方结构图,想到了去年 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • 本文详细介绍了ActivityManagerService (AMS) 的工作原理及其在Android系统中的重要角色。AMS作为system_server进程的一部分,在系统启动时加载,负责管理和协调应用程序中的Activity和服务(Service)。文章将通过具体的接口图和通信流程,帮助读者更好地理解AMS的工作机制。 ... [详细]
  • 管理类联考英语复习指南:基础语法(八)
    本文探讨了谓语动词和分词在句子中的作用,包括分词作为状语、定语和宾语补足语的使用方法,以及分词的时态和语态变化。 ... [详细]
author-avatar
小傲骄FMJ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有