POJ 1502 MPI Maelstrom
来源:互联网 发布:.org是什么域名 编辑:程序博客网 时间:2024/05/13 10:53
N个处理器要进行信息传递,处理器i传递信息给自己不需要时间,处理器i与处理器j之间相互传递信息的时间是一样的,不同处理器之间传递信息所需要的时间由一个矩阵的下三角给出。若矩阵对应位置为x,则说明相应的两个处理器之间无法传递信息。求从第一个处理器传递信息到其他所有处理器最少需要多少时间。
特殊处理一下值为x的情况,建立邻接阵,运用单源最短路径算法求出第一个处理器到其他所有处理器的最短传递信息时间,然后取这些最短时间中的最大者即可
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int N = 110;
int dis[N], visit[N], edge[N][N];
char s[N];
const int inf = 0x3f3f3f3f;
int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
memset(edge,-1,sizeof(edge));
for(int i=1;i<=n;i++)
{
dis[i]=inf;
edge[i][i]=0;
for(int j=1;j<i;j++)
{
scanf(" %s",s);
if(s[0]=='x')
{
edge[i][j]=edge[j][i]=inf;
}
else
{
edge[i][j]=edge[j][i]=atoi(s); //转化为数字,在stdlib中
}
}
}
memset(visit,0,sizeof(visit));
for(int i=1;i<=n;i++)
{
dis[i]=edge[1][i];
}
visit[1]=1;
for(int i=1;i<n;i++)
{
int u, x=inf;
for(int j=1;j<=n;j++)
{
if(dis[j]!=-1&&dis[j]<x&&visit[j]==0)
{
x=dis[j];
u=j;
}
}
if(x==inf)
{
break;
}
visit[u]=1;
for(int j=1;j<=n;j++)
{
if(edge[u][j]!=-1&&edge[u][j]+dis[u]<dis[j]&&!visit[j])
{
dis[j]=edge[u][j]+dis[u];
}
}
}
int sum=0;
for(int i=1;i<=n;i++)
{
sum=max(sum,dis[i]);
}
printf("%d\n",sum);
}
return 0;
}
- POJ 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- POJ-1502-MPI Maelstrom
- poj 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- poj 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom
- poj 1502:MPI Maelstrom
- poj 1502: MPI Maelstrom
- POJ 1502 MPI Maelstrom
- poj-1502 MPI Maelstrom
- POJ 2082 Terrible Sets (栈)
- Java线程笔记(一)
- 第一次接触 playground
- python数据类型
- ubuntu 14 安装 shadowsocks-qt5 并配置 pac 全局代理
- POJ 1502 MPI Maelstrom
- 星期天——干点啥呢???
- iOS中的const关键字
- 使用AsyncHttpClient碰到的问题及解决方法
- android如何实现类似ios点击状态栏回到顶部功能
- android launchmode(四种启动模式)应用场景及实例
- HTML5的那些事儿
- Qt之QRadioButton
- 使用google的zxing类生成一维码、二维码实例