• POJ 1502 MPI MaeIstrom ( 裸最短路 || atoi系统函数 )


    题意 : 给出 N 个点,各个点之间的路径长度用给出的下三角矩阵表示,上上角矩阵和下三角矩阵是一样的,主对角线的元素都是 0 代表自己到达自己不用花费,现在问你从 1 到 N 的最短路,矩阵的 x 代表点间无法互相到达

    分析 : 最短路模板…… 就是在输入的时候需要将字符串变成整数、自己写也可以,也可以使用 atoi(char *)函数,其作用是将字符串数组变成整数,复杂度为 O(n)

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 110;
    const int INF  = 0x3f3f3f3f;
    typedef pair<int, int> HeapNode;
    
    struct EDGE{ int v, nxt, w; };
    int Head[maxn], Dis[maxn];
    EDGE Edge[maxn*maxn];
    int N, cnt;
    inline void init()
    {
        for(int i=0; i<=N; i++)
            Head[i]=-1, Dis[i]=INF;
        cnt = 0;
    }
    
    inline void AddEdge(int from, int to, int weight)
    {
        Edge[cnt].v = to;
        Edge[cnt].w = weight;
        Edge[cnt].nxt = Head[from];
        Head[from] = cnt++;
    }
    
    int Dijkstra(int st)
    {
        priority_queue< HeapNode, vector<HeapNode>, greater<HeapNode> > Heap;
        Dis[st] = 0;
        Heap.push(make_pair(0, st));
        while(!Heap.empty()){
            pair<int, int> T = Heap.top(); Heap.pop();
            if(T.first != Dis[T.second]) continue;
            for(int i=Head[T.second]; i!=-1; i=Edge[i].nxt){
                int Eiv = Edge[i].v;
                if(Dis[Eiv] > Dis[T.second] + Edge[i].w){
                    Dis[Eiv] = Dis[T.second] + Edge[i].w;
                    Heap.push(make_pair(Dis[Eiv], Eiv));
                }
            }
        }
        int ret = 0;
        for(int i=1; i<=N; i++)
            ret = max(ret, Dis[i]);
        return ret;
    }
    char Digit[10];
    int main(void)
    {
    
        while(~scanf("%d", &N)){
            init();
            for(int i=1; i<=N; i++){
                for(int j=1; j<i; j++){
                    scanf("%s", Digit);
                    if(Digit[0] != 'x'){
                        int weight = atoi(Digit);
                        AddEdge(i, j, weight);
                        AddEdge(j, i, weight);
                    }
                }
            }
            printf("%d
    ", Dijkstra(1));
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    列表去重
    URL和URI的不同
    functional program language
    thinkphp5_笔记二
    关于《提问智慧》的笔记
    实习记录_2
    关于用户表的设计
    30秒运行超时的错误(Maximum execution time of 30 seconds exceeded)
    thinkphp5_笔记一
    Jquary 和Ajax实现简单的异步请求
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/7725605.html
Copyright © 2020-2023  润新知