zoj 1203 Swordfish【prim】

本文探讨了最小生成树算法的应用,通过实例演示了如何利用该算法解决实际问题,包括输入解析、距离矩阵构建、最小生成树寻找及输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//zoj1203

你们什么都没看到。。。下边的都是错觉,是错觉,错觉,嗯、、、、、、

 
        
        
        
        
        
        
        
        
        
        
        
        
        
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <algorithm> #define INT_MAXl 2100000000 using namespace std; int n; double map[101][101], v[101][2], lmin[101]; int next[101]; bool flag[101]; int find_min(int x) { int i; lmin[x] = INT_MAXl; int _next = x; for(i=0; i<n; i++) if(flag[i] && map[x][i] < lmin[x]) { lmin[x] = map[x][i]; _next = i; } return _next; } int main() { int i, j, cases=0; double p, q, ans; scanf("%d", &n); while( n) { if( !n )break; ans = 0; for(i=0; i<n; i++) scanf("%lf%lf", &v[i][0], &v[i][1]); for(i=0; i<n; i++) for(j=i+1; j<n; j++) { p = v[i][0] - v[j][0]; q = v[i][1] - v[j][1]; map[j][i] = map[i][j] = sqrt(p * p + q * q); } memset(flag, true, sizeof(flag) ); flag[0] = false; int latest; double w_min; while(1) { w_min = INT_MAXl; latest = -1; for(i=0; i<n; i++) { if( flag[i] == false) { next[i] = find_min(i); if(next[i] != i && w_min > lmin[i] ) { w_min = lmin[i]; latest = next[i]; } } } if( latest == -1) break; flag[ latest ] = false; ans += w_min; } printf("Case #%d:\nThe minimal distance is: %.2lf\n", ++cases, ans); scanf("%d", &n); if(n)printf("\n"); } return 0; }


26043352011-07-29 08:50:20Presentation Error 1203C++0264ylwh!
26043302011-07-29 08:42:52Presentation Error 1203C++0264ylwh!
26043282011-07-29 08:34:57Presentation Error 1203C++0264ylwh!
26029192011-07-28 08:28:32Wrong Answer 1203C++0264ylwh!
26029182011-07-28 08:28:24Compilation Error1203C00ylwh!
26027182011-07-27 21:45:10Wrong Answer 1203C++0264ylwh!
26027152011-07-27 21:44:43Compilation Error1203C00ylwh!
26025632011-07-27 20:14:27Wrong Answer 1203C++0264ylwh!
26025562011-07-27 20:12:16Compilation Error1203C++00ylwh!
26025482011-07-27 20:10:05Compilation Error1203C++00ylwh!
26024322011-07-27 19:06:07Wrong Answer 1203C++0264ylwh!
26024222011-07-27 18:58:57Wrong Answer 1203C++0220ylwh!
26024212011-07-27 18:58:44Compilation Error1203C00ylwh!

第一个最小生成树、、、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值