poj 2253 Frogger

来源:互联网 发布:淘宝达人自媒体 编辑:程序博客网 时间:2024/05/01 23:33

简单最小生成树

#include <iostream>#include <cstring>#include <cmath>#define inf 100000000using namespace std;int n;double map[250][250],lowc[250];bool vis[250];struct node{int x,y;}cell[150];double dis(node a,node b){return sqrt(1.0*(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}double prim(){int i,j,p;double minc,res=0;memset(vis,0,sizeof(vis));vis[0]=1;for(i=1;i<n;i++)lowc[i]=map[0][i];for(i=1;i<n;i++){minc=inf;p=-1;for(j=0;j<n;j++)if(vis[j]==0 && minc>lowc[j]){minc=lowc[j];p=j;}if(inf==minc)return -1;if(res<minc)res=minc;if(p==1)break;vis[p]=1;for(j=0;j<n;j++)if(vis[j]==0 && lowc[j]>map[p][j])lowc[j]=map[p][j];}return res;}int main(){int i,j,case_t=0,fg=0;double d;while(scanf("%d",&n)!=EOF && n){if(fg)printf("/n");fg=1;case_t++;for(i=0;i<n;i++)scanf("%d%d",&cell[i].x,&cell[i].y);for(i=0;i<n;i++)for(j=0;j<n;j++){map[i][j]=dis(cell[i],cell[j]);}printf("Scenario #%d/n",case_t);printf("Frog Distance = %.3lf/n",prim());}return 0;}


	
				
		
原创粉丝点击