• POJ


    题意:给定一个下三角矩阵,询问从1开始到其他点的最短路径中,最长的那个是多少。

    输入:N编号个数,然后对应 邻接矩阵的权值

    思路:根据题意就是直接使用 dijkstra,因为是单源最短路且没有负权。然后把得到的dist 去循环一次找到最大的值即可

    对于图的存储,由于编号数比较小,而且又是矩阵,所以直接开个邻接矩阵写了

    完整题解:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <vector>
    #include <cmath> 
    #include <algorithm>
    
    using namespace std;
    const int maxn = 105;
    const int inf = 0x3f3f3f3f;
    typedef pair<int,int> pi;
    int n;
    int g[maxn][maxn];
    int dist[maxn];
    void init(){
        memset(dist,inf,sizeof(dist));
        memset(g,0,sizeof(g));
    }
    void dijkstra(int s){
        priority_queue<pi>Q;
        dist[s] = 0;
        Q.push(make_pair(0,s));
        while(!Q.empty()){
            s = Q.top().second;
            Q.pop();//直接用邻接矩阵来做
            for(int i=0;i<n;i++){
                if(i==s) continue;
                if(dist[i]>dist[s]+g[s][i]) {
                    dist[i] = dist[s]+g[s][i];
                    Q.push(make_pair(-dist[i],i));//更新 
                }
            }    
        }
    } 
    int trans(string s){
        int tmp = 0;
        if(s[0]=='x') return inf;
        else{
            for(int i=0;i<s.size();i++){
                tmp += (s[i]-'0')*pow(10,(s.size()-i-1));            
            }
            return tmp;
        }
    }
    int main(){
    
        while(cin>>n){
            init();
            //从0,0开始存图
            init();
            string s; 
            int i,j; i = j =0;
            for(i=0;i<n;i++){
                for(j=0;j<i;j++){
                    cin>>s;
                    g[j][i] = g[i][j] = trans(s);
                }
                g[i][j] = 0;
            }
            dijkstra(0);
            int ans = 0;
            for(int i=1;i<n;i++){
                ans = max(dist[i],ans);
            }
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    缓存清理
    机器学习在电商领域三大应用,推荐,搜索,广告中商品排序
    并发和并行
    拷贝控制
    gitk
    git GUI Clients
    new delete
    Windows 安装 gcc
    C++ 运算符优先级
    iostream 操作符
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11287905.html
Copyright © 2020-2023  润新知