概述
题意:给n个点,边的关系呈一下下三角的形状给出,求第一个处理器到其他处理器最短的时间
思路:裸的最短路,直接用Dijkstra即可
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 110;
int g[maxn][maxn];
int d[maxn];
int vis[maxn];
int n;
int h(char s[])
{
int len = strlen(s);
int sum = 0;
for(int i = 0; i < len; i++)
{
sum = sum*10 + s[i]-'0';
}
return sum;
}
void Dijkstra()
{
int mincost,v;
memset(vis,0,sizeof(vis));
for(int i = 1; i <= n; i++)
d[i] = g[1][i];
d[1] = 0;
for(int i = 1; i <= n; i++)
{
mincost = inf;
for(int j = 1; j <= n; j++)
{
if(!vis[j]&&d[j]<mincost)
{
mincost = d[j];
v = j;
}
}
vis[v] = 1;
for(int j = 1; j <= n; j++)
{
if(d[j]>d[v]+g[v][j]&&g[v][j]!=inf)
{
d[j] = d[v]+g[v][j];
}
}
}
}
int main()
{
char s[20];
cin >> n;
memset(g,inf,sizeof(g));
for(int i = 0; i <= n; i++)
g[i][i] = 0;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j < i; j++)
{
cin >> s;
if(s[0]!='x')
{
g[i][j] = g[j][i] = h(s);
}
}
}
Dijkstra();
int ans = -1;
for(int i = 2; i <= n; i++)
{
ans = max(ans,d[i]);
}
cout<<ans<<endl;
return 0;
}
最后
以上就是甜甜羽毛为你收集整理的poj 1502 (最短路)的全部内容,希望文章能够帮你解决poj 1502 (最短路)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复