hdu 1875畅通工程再续-prim最小生成树

来源:互联网 发布:扫描字的软件 编辑:程序博客网 时间:2024/03/29 03:53

hdu 1875畅通工程再续

 

邻接矩阵中的数据必须初始化完整

 

#include<iostream>#include<math.h>using namespace std;const double INF=1000000000.0;double mp[100][100]; struct point{int x,y;} P[100];double prim(int N){int i,j,k,mark=1;double min,length;for(i=1;i<=N;i++){mp[i][i]=0;                      //重要! mp[0][i]=mp[1][i];}length=0;for(i=2;i<=N;i++){min=INF;k=1;for(j=1;j<=N;j++){if(mp[0][j]&&min>mp[0][j]){min=mp[0][j];k=j;}}if(k==1) return INF;length+=min;mp[0][k]=0;for(j=1;j<=N;j++)if(mp[0][j]&&mp[0][j]>mp[k][j])mp[0][j]=mp[k][j];}return length;}double dist(point x,point y){return (double)sqrt((double)((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y)));}int main(){int i,j,T,N;double D,ans;scanf("%d",&T);while(T--){scanf("%d",&N);for(i=1;i<=N;i++){scanf("%d%d",&P[i].x,&P[i].y);for(j=1;j<=i;j++){D=dist(P[i],P[j]);if(10>D||1000<D)mp[i][j]=mp[j][i]=INF;elsemp[i][j]=mp[j][i]=D;}}ans=prim(N);if(ans<INF) printf("%.1lf\n",100*ans);else printf("oh!\n");}return 0;}


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 龙血树叶子下垂怎么办 龙血树叶子卷曲怎么办 3岁宝宝长期便秘怎么办 4岁小儿便秘严重怎么办 3岁宝宝便秘严重怎么办 3岁宝宝一直便秘怎么办 11个月宝宝便秘怎么办 2个月的宝宝便秘怎么办 宝宝便秘拉不下来怎么办 5一6岁儿童便秘怎么办 3个月宝宝便秘怎么办 8个月宝宝便秘怎么办 孕5个月咳嗽厉害怎么办 孕8个月咳嗽厉害怎么办 拆石膏后关节僵硬怎么办 宝宝的小腿不直怎么办 鸡咳嗽有痰呼噜怎么办 风热感冒怎么办小窍门 吃完虾喝了牛奶怎么办 三文鱼头汤腥怎么办 晚上咳嗽厉害怎么办睡不着觉 刚怀孕发烧39度怎么办 刚怀孕发烧38度怎么办 怀孕10天发烧了怎么办 怀孕2个月发烧了怎么办 lol误封3年怎么办 心悦会员到期了怎么办 心悦游戏家到期怎么办 无间鬼后运气背怎么办 趣店被骗提现了怎么办 微转奇迹闪退怎么办 奇迹暖暖ios闪退怎么办 奇迹mu任务没做怎么办 外地人在北京上社保怎么办 医社保中间断了怎么办 社保断了2年怎么办 孩子的社保断了怎么办 社保断了四个月怎么办 社保辞职后断了怎么办 保险断了一个月怎么办 社保断交五年了怎么办