http://poj.org/problem?id=1502
第一篇C++代码
学到几个函数:括号里边都是数组名
atof() 将字符串转换成浮点数值
atoi() 将字符串转换成整数值
atol() 将字符串转换成长整数值
strtod() 将字符串转换成双精度型数值
strtol() 将字符串转换成长型数值
用迪杰斯特拉求最短路中的最大值
#include<iostream>
#include<cstring>
using namespace std;
int G[102][102],dis[102];
void dijs(int n)
{
int k,i,j,t,min;
int visit[102]={0};
visit[1]=1;
for(i=1;i<n;++i)
{
k=1;
min=0x3fffffff;
for(j=1;j<=n;++j)
{
if(!visit[j]&&min>dis[j])
{
k=j;
min=dis[j];
}
}
visit[k]=1;
for(t=1;t<=n;++t)
{
if(!visit[t]&&(min+G[k][t]<dis[t]))
dis[t]=min+G[k][t];
}
}
}
int main()
{
int n,i,j,time;
while(cin>>n)
{
char ch[20];
for(i=1;i<=n;++i)
G[i][i]=0;
for(i=2;i<=n;++i)
for(j=1;j<i;++j)
{
cin>>ch;
if(!strcmp(ch,"x"))
G[i][j]=G[j][i]=0x3fffffff;
else
G[i][j]=G[j][i]=atoi(ch);
}
for(i=1;i<=n;++i)
dis[i]=G[1][i];
dijs(n);
time=0;
for(i=1;i<=n;++i)
{
if(time<dis[i])
time=dis[i];
}
cout<<time<<endl;
}
return 0;
}