poj1502

题意:好难懂 看了别人题解才知道; 翻了好几页百度 所以我决定写一个能让大家明白的题解

第一行:一个数T 表示有几台处理器(第一台处理器要给其他处理器发消息)

第二行:给你一个倒三角  就是A(i,j)就是i到j之间的距离    当然本身到本身的距离肯定为0  ij都为1是本身所以第一个不用输入 ,又因为道路是双向的 所以 只给一半倒三角 如果是X表示道路不通(设置为INF) 就是在矩阵中查询最短路

让你求最小的消耗时间 

思路:dijkstra算法:求出第一个处理器到其他处理器之间的最小消耗  然后找出其中最大的 就是这个消息传递的最小消耗

用到的知识点:atof()将字符串转换成浮点数

                          atoi()将字符串转换成整数

                          atol()字符串转换成长整数

                          strtod().....双精度




#include <iostream>

#include <cstdio>

#include <algorithm>

#include <cstring>

#define INF 0x3f3f3f3f

#define maxn 150


using namespace std;


int map[maxn][maxn];

int d[maxn];

bool vis[maxn];

char ch[15];

int T;

void dijkstra()

{

    memset(vis,0,sizeof(vis));

    for(int i = 1; i <= T; i ++)

    {

        d[i] = map[1][i];

    }

    for(int i = 1; i <= T; i++)

    {

        int temp = -1;

        for(int j = 1; j <= T; j ++)

        {

            if(!vis[j] && (temp == -1 || d[j] < d[temp]))

               temp = j;

        }

        vis[temp] = 1;

        for(int j = 1; j <= T; j++)

        {

            if(!vis[j] && d[j] > d[temp] + map[temp][j])

                d[j] = d[temp] + map[temp][j];

        }

    }

}

int main()

{

    scanf("%d",&T);

    //memset(map,0,sizeof(map));

    for(int i = 1; i <= T; i++)

        map[i][i] = 0;

    for(int i = 2; i <= T; i ++)

        for(int j = 1; j <= i - 1; j ++)

    {

        scanf("%s",ch);

        if(ch[0] == 'x')

            map[i][j] = map[j][i] = INF;

        else map[i][j] = map[j][i] = atoi(ch);

    }

    dijkstra();

    int max = -1;

    for(int k = 1; k <= T; k ++)

    {

        if(max == -1 || d[k] > max)

            max = d[k];

    }

    printf("%d\n",max);

        return 0;

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值