zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    C#移动及改变控件大小
    flutter学习(状态组件,组件)
    dart学习1
    rn的优化
    git命令
    Immutable
    树形数据结构的搜索功能
    promise
    js出场率极高的代码
    js浮点数计算精度解决方案
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10327911.html
Copyright © 2011-2022 走看看