just simple PRIM. i should pay more attention to the details. i am so neglectful.
/*
* POJ-2485 highways
* mike-w
* 2011-9-7
* ----------------------------------
* HINT: PRIM
* PS: 注意细节啊——与DIJKSTRA相区别
*/
#include<stdio.h>
#define INF 0xffff
#define SIZE 555
int graph[SIZE][SIZE];
int dist[SIZE];
int tag[SIZE];
int prim(int size)
{
int i,j,min,max;
/* initialize */
for(i=0;i<size;i++)
dist[i]=INF,tag[i]=0;
max=0;
dist[0]=0;
for(i=0;i<size;i++)
{
/* extract minimal */
for(j=0;j<size;j++)
if(!tag[j]&&dist[j]<INF)
break;
for(min=j++;j<size;j++)
if(!tag[j]&&dist[j]<dist[min])
min=j;
/* update */
tag[min]=1;
if(max<dist[min])
max=dist[min];
for(j=0;j<size;j++)
if(!tag[j]&&graph[min][j]<dist[j])
dist[j]=graph[min][j];
}
return max;
}
int main(void)
{
int ncase,size,i,j;
#ifndef ONLINE_JUDGE
freopen("2485.in","r",stdin);
#endif
scanf("%d",&ncase);
while(ncase-->0)
{
scanf("%d",&size);
for(i=0;i<size;i++)
for(j=0;j<size;j++)
scanf("%d",graph[i]+j);
printf("%d\n",prim(size));
}
return 0;
}
8024



被折叠的 条评论
为什么被折叠?



