zoukankan      html  css  js  c++  java
  • POJ1502 MPI Maelstrom -DIJKSTRA练习系列

    本题的大意是有N个处理器,任何两个处理器之间的传输信息是需要时间的,有的处理器之间不能传输信息,给出一个处理器传输信息时间的二维矩阵的下三角,X表示不能传输,问从第一个处理器传输到所有处理器所需要的总时间。

    本地是典型的DIJKSTRA水题,注意输入时需要用字符串输入,程序如下:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    const int maxn=110,maxint=1000000000;
    int a[maxn][maxn],d[maxn],p[maxn];
    char s[20],c;
    int main(){
        int i,j,k,l,m,n;
        scanf("%d",&n);
        for(i=2;i<=n;i++)
            for(j=1;j<i;j++){
                scanf("%s",&s);                  
                if(s[0]=='x'){
                    a[i][j]=0;
                    a[j][i]=0;
                    c=getchar();
                    continue;
                }
                m=0;
                l=strlen(s);
                for(k=0;k<l;k++){
                    m=m*10+s[k]-'0';                 
                }
                a[i][j]=m;
                a[j][i]=m;
                c=getchar();            
            }
        for(i=1;i<=n;i++)d[i]=maxint;
        d[1]=0;
        int ans=0,mind;
        for(i=1;i<=n;i++){
            mind=maxint;
            for(j=1;j<=n;j++)
                if(!p[j] && d[j]<mind){
                    mind=d[j];
                    k=j;         
                }
            p[k]=1;
            ans=d[k]>ans?d[k]:ans;
            for(j=1;j<=n;j++)
                if(!p[j] && a[k][j] && d[j]>d[k]+a[k][j])
                    d[j]=d[k]+a[k][j];                  
        }    
        printf("%d
    ",ans);
        return 0;    
    }
    

  • 相关阅读:
    webpack基本使用笔记
    gulp学习记录
    页面优化
    linux下使用indent整理代码
    C++中的getline()
    Sum of Two Integers
    TwoSum
    IDEA个人常用快捷键总结
    mysql数据库遇到的各种问题
    Python中*args 和**kwargs的用法和区别
  • 原文地址:https://www.cnblogs.com/cnyali/p/4163898.html
Copyright © 2011-2022 走看看