• 【Audiophobia UVA


    题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小。

    题目思路:设d [ i ] [ j ]表示 i 到 j 的最大噪音的最小值。 那么d [ i ] [ j ] = min( d[ i ] [ j ] ,max( d [ i ] [ k ] , d [ k ] [ j ]) );
    AC代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<climits>
    #include<cmath>
    #include<cstdlib>
    #include<vector>
    #include<set>
    #include<utility>
    #include<map>
    #include<string>
    using namespace std;
    const int maxn = 100 + 100;
    const int INF = 0x3f3f3f3f;
    int C, S, Q;
    int c1, c2, d;
    int dist[maxn][maxn];
    void Floyd()
    {
        for(int k = 1; k <= C; k++)
        {
            for(int i = 1; i <= C; i++)
                for(int j = 1; j <= C; j++)
                    dist[i][j] = min(dist[i][j], max(dist[i][k], dist[k][j]));
        }
    }
    int main()
    {
        // freopen("input.txt", "r", stdin);
        // freopen("output.txt", "w", stdout);
        int cnt = 0;
        while(cin >> C >> S >> Q && C && S && Q)
        {
            ++cnt;
            for(int i = 1; i <= C; i++)
                for(int j = 1; j <= C; j++)
                    dist[i][j] = INF;
            for(int i = 0; i < S; i++)
            {
                cin >> c1 >> c2 >> d;
                dist[c1][c2] = dist[c2][c1] = d;
            }
            Floyd();
            if(cnt > 1)
                cout << endl;
            cout << "Case #" << cnt << endl;
            for(int i = 0; i < Q; i++)
            {
                cin >> c1 >> c2;
                if(dist[c1][c2] == INF)
                    cout << "no path" << endl;
                else 
                    cout << dist[c1][c2] << endl;
            }
        }
    }
    
  • 相关阅读:
    webform单选、复选
    webform下拉列表、列表框
    webform文本框 、显示文字、按钮、跳转页面、页面传值
    sol函数初级查询,去重、分组、排序
    sql基础
    递归
    函数有多个返回值
    Hibernate (开放源代码的对象关系映射框架)介绍
    extjs介绍
    easyui介绍
  • 原文地址:https://www.cnblogs.com/KeepZ/p/11443915.html
Copyright © 2020-2023  润新知