您的位置:首页 > 其它

5-8 哈利·波特的考试

2016-08-05 21:50 302 查看




主要用到多源最短路径算法Floy算法,Floy算法程序



#include<stdio.h>
#define INF 65535
#define MAXN 100
int G[MAXN+1][MAXN+1];
void Floy(int N)
{
int i,j,k;
for(k=1;k<=N;k++)
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
if(G[i][k]+G[k][j]<G[i][j])
{
G[i][j]=G[i][k]+G[k][j];
}
}
void Find(int N)
{
int i,j,max,min,temp;
Floy(N);
min=INF;
for(i=1;i<=N;i++)
{
max=0;
for(j=1;j<=N;j++)//每个顶点与其它顶点最短路径的最大值max,循环要排除对角元
{
if(i!=j&&G[i][j]>max)
max=G[i][j];
}
if(INF==max)//图不连通
{
printf("0\n");
return;
}
if(max<min)
{
min=max;
temp=i;
}
}
printf("%d %d\n",temp,min);
}
int main()
{
int N,M,i,j,x,y,w;
scanf("%d %d",&N,&M);
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)//权重都设为最大值
G[i][j]=INF;
for(i=0;i<M;i++)
{
scanf("%d %d %d",&x,&y,&w);
G[x][y]=G[y][x]=w;
}
Find(N);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Floy算法