UVA10099 - The Tourist Guide(floyd + 最小值的最大化)

UVA10099 - The Tourist Guide(floyd + 最小值的最大化)

UVA10099 - The Tourist Guide

题目大意:

给一无向图,图上的点代表城市,边代表路,每条边上的权值代表的是这条路上的巴士的最大乘客数,作为导游,给定起点和终点,和负责的游客,问需要的最少的趟数可以将这个游客送到终点。

解题思路:

路径上最小值的最大化。减少趟数,那么就的要求这条路上的可负载乘客量尽量要大,注意每一趟导游都要跟上。floyd最短路过程中,记录下路径上的最大值。

G【i】【j】 = max(G【i】【j】, min(G【i】【k】+G【k】【j】);

代码:

#include <cstdio>
#include <cstring>
using namespace std;

const int maxn = 105;

int S, E, NUM;
int G[maxn][maxn];

int min (const int a, const int b) {
    return a < b ? a : b;
}
int Floyd(int N) {

    for (int k = 1; k <= N; k++)
        for (int i = 1; i <= N; i++)
            for (int j = 1; j <= N; j++) {

                if (G[i][k] == -1 || G[k][j] == -1)
                    continue;
                if (min(G[i][k], G[k][j]) > G[i][j])
                    G[i][j] = min(G[i][k], G[k][j]);
            }
    return G[S][E];
}

int main () {

    int N, R, T = 0;
    int x, y, num;
    while (scanf ("%d%d", &N, &R) && (N || R)) {

        memset(G, -1, sizeof(G));
        for (int i = 0; i < R; i++) {
            scanf ("%d %d %d", &x, &y, &num);
            G[x][y] = G[y][x] = num;
        }

        scanf ("%d %d %d", &S, &E, &NUM);       

        printf ("Scenario #%d\nMinimum Number of Trips = ", ++T);
        if (S == E) {
            printf ("0\n\n");
            continue;
        }
        int num = Floyd(N);
        if (NUM % (num - 1) == 0)
            printf ("%d\n\n", NUM/(num - 1));
        else
            printf ("%d\n\n", NUM/(num - 1) + 1);
    }
    return 0;
}
时间: 2024-10-26 10:15:53

UVA10099 - The Tourist Guide(floyd + 最小值的最大化)的相关文章

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

解题报告 题意: 有一个旅游团现在去出游玩,现在有n个城市,m条路.由于每一条路上面规定了最多能够通过的人数,现在想问这个旅游团人数已知的情况下最少需要运送几趟 思路: 求出发点到终点所有路当中最小值最大的那一条路. 求发可能有多种,最短路的松弛方式改掉是一种,最小生成树的解法也是一种(ps,prime和dijs就是这样子类似的) #include <iostream> #include <cstdio> #include <cstring> #include <

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 from one city to another. Some two-way roads connect the cities. For each pair of neighboring cities there is a bus service that runs only between thos

uva 10099 The Tourist Guide nyoj 1019 亲戚来了【单个路线最大流【最短路算法】】

题目:uva 10099 The Tourist Guide nyoj 1019 亲戚来了 题意:给出一个无向图,每条路有一个容量.从 s 到 t 的一条最大的流量. 分析:这个题目可以用最短路的算法来做,最短路是求从 s 到 t 的最短路,这里是求从 s 到 t 的最小容量.最短路的三种算法都可以. nyoj的使我们比赛的题目,有坑,图有重边,要处理,还有s可能等于t. spfa代码: #include <cstdio> #include <iostream> #include

uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)

题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> using namespace std; int map[101][101]; void floyd(int n) { for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) map[i][j] = m

[uva] 10099 - The Tourist Guide

10099 - The Tourist Guide 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1040 Mr.G.自己也算一个人……… 反映到代码里是127行 ? 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 3

UVA 10099 The Tourist Guide【floyd】

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1040 题意: n个点,m条路径,每条路径最多通过人数最多为value人,求把v个游客从a点运送到b点,需要几辆车,注意导游自己也算一个人. 思路:floyd找出两点间最大运送量,然后计算需要几躺即可 代码: #include <stdio.h> #include &

10099 The Tourist Guide

题意:给出n的城市m条通道,然后每条通道最大的承载人数给出来了,然后给出起点和终点以及要搭载的人数,问最少要走多少次才能把全部游客送到目的地 因为导游每次都要跟团,所以每条交通道路搭载的最大人数要减1= = 克鲁斯卡尔算法,就会排序的时候按照运输人数的从大到小排序,然后当起点和终点在一个联通分支时即可 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> usi

最大值最小化问题 和最小值最大化问题 ---(二分)

最大值最小化 即是当存在一个x为最大值的最小化,则x-1不成立,x+1可行,但他不满足最小,所以设边界最小值L,最大值R,二分查找第一个满足题意的, 例子: 把一个包含n个正整数的序列划分成m个连续的子序列.设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少? 例如序列1 2 3 2 5 4划分为3个子序列的最优方案为 1 2 3 | 2 5 | 4,其中S(1),S(2),S(3)分别为6,7,4,那么最大值为7: 如果划分为 1 2 | 3 2 | 5 4,则最大值为9,不是

UESTC 888 Absurdistan Roads (kruscal+floyd)

(o(╯□╰)o还是很不习惯国外的区域赛题目...读不是很懂啊不是很懂啊...要研究半天) Absurdistan Roads Time Limit: 5678/3456MS (Java/Others)     Memory Limit: 65432/65432KB (Java/Others) Submit  Status The people of Absurdistan discovered how to build roads only last year. After the disco