10099 - The Tourist Guide

题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1040

打不开的可以上国内的:http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1080

之前使用 最小生成树的 Kruskal 算法 + 广度优先搜索

改进之后用了 用动态规划技术实现的所有节点对的最短路径问题的 Floyd-Warshall 算法,不仅代码量急剧减少,简化了逻辑

此题的坑之一:Mr.G.自己也算一个人……… 反映到代码里是63行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
 
int number_points;
int map_values[110][110];
 
void floyd()
{
    for (int a = 1; a <= number_points; a++)
    {
        for (int b = 1; b <= number_points; b++)
        {
            for (int x = 1; x <= number_points; x++)
            {
                int ax = map_values[a][x];
                int xb = map_values[x][b];
 
                int smaller = ax < xb ? ax : xb;
                if (map_values[a][b] < smaller)
                {
                    map_values[a][b] = smaller;
                }
            }
        }
    }
}
 
 
int main()
{
    int count = 1;
    int number_ways;
    scanf("%d%d", &number_points, &number_ways);
    while(number_points != 0 && number_ways != 0)
    {
        // 0. 初始化图
        for (int y = 1; y <= number_points; y++)
        for (int x = 1; x <= number_points; x++)
        {
            map_values[x][y] = 0;
        }
 
        // 1. 读取边
        for (int i = 0; i < number_ways; i++)
        {
            int x, y, values;
            scanf("%d%d%d", &x, &y, &values);
            map_values[x][y] = values;
            map_values[y][x] = values;
        }
 
        // 2. 读取起始节点和顾客数量
        int start, end, number_customer;
        scanf("%d%d%d", &start, &end, &number_customer);
 
        // 3. floyd 算法
        floyd();
 
        // 4. 获取值
        int max_value = map_values[start][end];
 
        // 5. 输出结果
        max_value--; // Mr. G. 自己也算上
 
        int remainder = number_customer % max_value;
        printf("Scenario #%d\nMinimum Number of Trips = ", count);
        if (remainder)
            printf("%d\n", number_customer / max_value + 1);
        else
            printf("%d\n", number_customer / max_value);
 
        // 6. 读取下一行数据
        scanf("%d%d", &number_points, &number_ways);
        count++;
    }
 
    return 0;
}

[uva] 10099 - The Tourist Guide的更多相关文章

  1. UVa10099_The Tourist Guide(最短路/floyd)(小白书图论专题)

    解题报告 题意: 有一个旅游团如今去出游玩,如今有n个城市,m条路.因为每一条路上面规定了最多可以通过的人数,如今想问这个旅游团人数已知的情况下最少须要运送几趟 思路: 求出发点到终点全部路其中最小值 ...

  2. floyd类型题UVa-10099-The Tourist Guide +Frogger POJ - 2253

    The Tourist Guide Mr. G. works as a tourist guide. His current assignment is to take some tourists f ...

  3. CodeForces 589H Tourist Guide

    传送门 题目大意 给定$n$个点$m$条边的无向图,有$K$个关键点,你要尽可能的让这些关键点两两匹配,使得所有点对之间可以通过简单路径连接且任意两个简单路径没有重复的边(可以是共同经过一个点),输出 ...

  4. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  5. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  6. ACM训练计划step 1 [非原创]

    (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...

  7. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  8. uva 10048 Audiophobia(最小生成树)

    题目链接:10048 - Audiophobia 题目大意:有n个城市,和m条街道,每条街道有一个噪音值,q次去问,从城市a到城市b,路径上分贝值的最大值最小为多少. 解题思路:与uva 10099的 ...

  9. UESTC-888-Absurdistan Roads(kruskal+floyd)

    The people of Absurdistan discovered how to build roads only last year. After the discovery, every c ...

随机推荐

  1. 3.nginx日志

    1. 自定义日志格式为json log_format json '{"@timestamp":"$time_iso8601",' '"@version ...

  2. 前端cookie、localStorage、sessionStorage缓存技术总结

    转载自:https://www.cnblogs.com/belove8013/p/8134067.html 1.Cookie JavaScript是运行在客户端的脚本,因此一般是不能够设置Sessio ...

  3. python设计模式--读书笔记

    GoF在其设计模式一书中提出了23种设计模式,并将其分为三类: 创建型模式 将对象创建的细节隔离开来,代码与所创建的对象的类型无关. 结构型模式 简化结构,识别类与对象间的关系,重点关注类的继承和组合 ...

  4. 使用Hive Rest API 连接HDInsight

    以下连接是微软最新的关于HDInsight中Hive命令的RestAPI示例地址.. 使用 HDInsight .NET SDK 运行 Hive 查询 请使用接口有异常的同学检查是否使用的是下面地址中 ...

  5. select for update和select for update wait和select for update nowait的区别

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...

  6. JSP页面GET传值乱码问题

    两个JSP页面进行GET传值的时候.两个页面的编码都是UTF-8,且传值之前设置response的content为UTF-8也解决不了问题. 设置tomcat的配置文件server.xml:在Conn ...

  7. 项目管理系列--好用的代码评审(Code Review)工具

    1. Gerrit Gerrit is a web based code review system, facilitating online code reviews for projects us ...

  8. C#之RabbitMQ系列(一)

    RabbitMQ–环境搭建 MQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接 ...

  9. 【读书笔记】读《编写可维护的JavaScript》 - 编程风格(第一部分)

    之前大致翻了一遍这本书,整体感觉很不错,还是不可追求快速,需要细细理解. 这篇随笔主要对本书的第一部分中对自己触动比较大的部分及与平常组织代码最为息息相关的部分做一个记录,加深印象. 主要讲述五点内容 ...

  10. Vue-Render函数理解示例

    对应文档节点: https://vuefe.cn/v2/guide/render-function.html#Slots <body> <div id="app" ...