• uva10048(floyd)Audiophobia


    题目连接:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&page=show_problem&problem=989

    题意:给出n个城镇,有m条路径,每条路径上会有噪音,给出两个城镇sta, end,问从sta到end的所有路径中受到的一段噪音最大值中最小的数。


    例如:

    如图:从1到7有 四条路线1367,1347,1257,1247,其中这四条路线中噪音最大值分别为120,80,90,120,则噪音最大值的最小值就是80;

    思路:

    最短路floyd算法,只要比较两条路径得到噪音的较大的选出最小的赋给g[i][j],输出g[sta][end]。

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 100;
    int g[N][N];
    int n,m,que;
    const int INF = 0x3f3f3f3f;
    
    void floyd() {
        for(int k = 1; k <= n; k++) {
            for(int i = 1; i <= n; i++) {
                for(int j = 1; j <= n; j++) {
                    int maxx = g[i][k] < g[k][j] ? g[j][k]:g[i][k];  //以每一个k为转折点,找到这条路上噪音的最大值
                    if(g[i][j] > maxx) {    //噪音最大值的最小值
                        g[i][j] = maxx;
                    }
                }
            }
        }
    }
    int main()
    {
        int t = 1;
        while(~scanf("%d%d%d",&n,&m,&que)&&n||m||que) {
            memset(g,INF,sizeof(g));  //初始化为无穷
            int a,b,c;
            for(int i = 0; i < m; i++) {
                cin>>a>>b>>c;
                g[a][b] = g[b][a] = c;
            }
            floyd();
            if(t != 1) {
                printf("
    ");
            }
            printf("Case #%d
    ",t++);
            int sta,end;
            while (que--) {
                scanf("%d%d", &sta, &end);
                if (g[sta][end] < INF) {   //若是无穷,则说明无解
                    printf("%d
    ", g[sta][end]);
                }
                else {
                    printf("no path
    ");
                }
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    PHP运行模式
    深入理解php内核 编写扩展_III- 资源
    深入理解php内核 编写扩展 II:参数、数组和ZVALs
    [置顶] 图灵电子与电气工程丛书
    PHP开发-上传文件
    DWZ (JUI) 教程(二):处理信息回馈的通用规范
    设计模式之装饰者模式
    UVA 11464
    uva 1346
    [置顶] 手把手教你iOS消息推送证书生成以及Push消息
  • 原文地址:https://www.cnblogs.com/clb123/p/11652582.html
Copyright © 2020-2023  润新知