• POJ1502-MPI Maelstrom-(单源最短路-Djsktra)


    思路:要求最短时间从原点1到所有的点,先求到所有点的最短距离。
    因为是可以同时 向各个方向出发,所以到达最远的那个点的时候,其他点已经到达了。
    即求单源最短路径中的最长的那条路径值

    
    
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<math.h>
    #include<string>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
    
    int a[105][105];
    int n;
    int d[105];
    bool used[105];
    
    void djsktra()
    {
        fill(d,d+n+1,inf);
        fill(used,used+n+1,false);
        //memset(d,inf,sizeof(d));
        //memset(used,false,sizeof(used));
        d[1]=0;
    
        int v;
        while(true)
        {
            v=-1;
            for(int u=1;u<=n;u++)
                if( !used[u] && (v==-1 || d[u]<d[v]) )
                    v=u;
            if(v==-1) break;
            used[v]=true;
            for(int u=1;u<=n;u++)
                d[u]=min(d[u],d[v]+a[v][u]);
        }
        return;
    }
    
    int main()
    {
        char s[10];
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=1;i<=n;i++) a[i][i]=0;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<i;j++)
                {
                    scanf("%s",s);
                    if(s[0]!='x')
                        a[i][j]=a[j][i]=atoi(s);//把字符串转换成整型数,ASCII to integer 的缩写。
                    else
                        a[i][j]=a[j][i]=inf;
                }
            }
            djsktra();
    
            int maxx=-1;
            for(int i=1;i<=n;i++)
                maxx=max(maxx,d[i]);
                printf("%d
    ",maxx);
        }
        return 0;
    }
  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10327911.html
Copyright © 2020-2023  润新知