PTA 数据结构与算法题目集(中文)5-8 哈利·波特的考试 (25分)

#include
/*
最短路的floyd算法 
*/
const int max=100000;
int g[105][105];
int n,m;
void floyd()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(g[i][j]>g[i][k]+g[k][j])g[i][j]=g[i][k]+g[k][j];
}
}
void print()
{
int maxnum=0,maxans=max;
for(int i=1;i<=n;i++)
{
int num=0;
for(int j=1;j<=n;j++)
if(g[i][j]>num)num=g[i][j];
if(num {
maxnum=i;
maxans=num;
}
}
if(maxnum)printf("%d %d\n",maxnum,maxans);
else printf("0\n");
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j)g[i][j]=0;
else g[i][j]=max;
for(int i=0;i {
int u,v,cost;
scanf("%d %d %d",&u,&v,&cost);
if(g[u][v]>cost)g[u][v]=g[v][u]=cost;
}
floyd();
print();
return 0;
}

你可能感兴趣的:(PTA 数据结构与算法题目集(中文)5-8 哈利·波特的考试 (25分))