| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Floyd为何也能16MSIn Reply To:我只觉得输入挺麻烦的 Posted by:speedcell4 at 2011-08-19 19:24:11 #include<iostream>
#include<string>
using namespace std;
#define SIZE (101)
#define INF (1<<29)
int n;
int map[SIZE][SIZE];
int findMax(int a,int b)
{
return a>b?a:b;
}
int findMin(int a,int b)
{
return a<b?a:b;
}
int ReadIn(void)
{
string a; cin>>a;
if(a=="x") return INF;
else
{
int ans=0;
for(int i=0,l=a.length();l-i>0;i++)
{
ans*=10;
ans+=(a[i]-'0');
}
return ans;
}
}
int floyd(void)
{
for(int i=0;n-i>0;i++)
{
for(int j=0;n-j>0;j++)
{
for(int k=0;n-k>0;k++)
{
map[j][k]=findMin(map[j][k],map[j][i]+map[i][k]);
}
}
}
int ans=0;
for(int i=1;n-i>0;i++)
{
ans=findMax(ans,map[0][i]);
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=0;n-i>0;i++)
{
map[i][i]=INF;
for(int j=0;i-j>0;j++)
{
map[i][j]=map[j][i]=ReadIn();
}
}
printf("%d\n",floyd());
//system("pause");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator