poj 2485Highways (求最长路)
最小生成树的变化。。
求最长的路的值。。
#include"stdio.h" #include"string.h" #define INF 9999999 int map[501][501],f[501],mark[501],n; void prime() { int i,j,k,min,max; memset(mark,0,sizeof(mark)); for(i=0;i<n;i++) f[i]=map[0][i]; f[0]=0;mark[0]=1; max=-1; for(i=1;i<n;i++) { min=INF; for(j=0;j<n;j++) { if(!mark[j]&&f[j]<min) { min=f[j];k=j; } } mark[k]=1; max=max>min?max:min; for(j=0;j<n;j++) { if(f[j]>map[k][j]&&!mark[j]) f[j]=map[k][j]; } } printf("%d\n",max); } int main() { int i,j,T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) scanf("%d",&map[i][j]); } prime(); } return 0; }