zoukankan      html  css  js  c++  java
  • MPI Maelstrom POJ 1502

    http://poj.org/problem?id=1502

    题意:这是一个下三角,上三角跟下三角图形一致,(若是完整的矩阵的话, 相当于 Map[i][j] 的距离为相对应的数值)这道题也一样。 不同的是 若 显示的为 ‘x’字母时, 说明Map[i][j]为正无穷, 两个点之间不通。 现在的问题是:求1到2, 1到3, .... 1到n 之中哪条路是最长的。

    ****

    英语真的是太渣,表示看懂题意不是一般的难啊, 但是看懂题意后真的好简单 %>_<% 。。

    不要再考我英语了,我诚实的说四级还没过  %>_<%。。。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<queue>
    #include<algorithm>
    using namespace std;
    
    #define maxn 110
    #define oo 0x3f3f3f3f
    int maps[maxn][maxn], v[maxn], dist[maxn];
    int n;
    
    void Init()
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(i==j)
                    maps[i][j] = 0;
                else
                    maps[i][j] = maps[j][i] = oo;
            }
        }
    }
    
    void Dij()
    {
        memset(v, 0, sizeof(v));
        memset(dist, 0, sizeof(dist));
        for(int i=1; i<=n; i++)
            dist[i] = maps[1][i];
            v[1] = 1;
    
        for(int i=1; i<n; i++)
        {
            int index, mins = oo;
    
            for(int j=1; j<=n; j++)
            {
                if(!v[j] && dist[j] <mins)
                {
                    index = j;
                    mins = dist[j];
                }
            }
    
            v[index] = 1;
    
            for(int j=1; j<=n; j++)
            {
              if(dist[j] > mins + maps[index][j] && !v[j])
                dist[j] = mins + maps[index][j];
            }
        }
    
        int ans = 0;
         for(int i=1; i<=n; i++)
            ans = max(ans, dist[i]);
    
        printf("%d
    ", ans);
    }
    
    int main()
    {
        char str[maxn];
        int num;
    
        while(scanf("%d", &n)!=EOF)
        {
    
             Init();
    
            for(int i=2; i<=n; i++)
            {
                for(int j=1; j<i; j++)
                {
                    scanf("%s", str);
                   if(str[0] != 'x')
                   {
                       sscanf(str, "%d", &num);
                       maps[i][j] = maps[j][i] = min(maps[i][j], num);
                   }
                }
            }
    
            Dij();
    
        }
    
        return 0;
    }
    View Code

     

  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5698105.html
Copyright © 2011-2022 走看看