大佬教程收集整理的这篇文章主要介绍了P1265-公路修建,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define pb push_BACk 4 #define _for(i,a,b) for(int i = (a);i < (b);i ++) 5 #define INF 100000003 6 #define ll long long 7 inline ll read() 8 { 9 ll ans = @H_675_42@0; 10 char ch = getchar(),last = ‘ ‘; 11 while(!isdigit(ch)) last = ch,ch = getchar(); 12 while(isdigit(ch)) ans = (ans << @H_675_42@1) + (ans << @H_675_42@3) + ch - ‘0‘,ch = getchar(); 13 if(last == ‘-‘) ans = -ans; 14 return ans; 15 } 16 inline void write(ll X) 17 { 18 if(x < @H_675_42@0) x = -x,putchar(‘-‘); 19 if(x >= @H_675_42@10) write(x / @H_675_42@10); 20 putchar(x % @H_675_42@10 + ‘0‘); 21 } 22 23 double mincost[@H_675_42@5003]; 24 bool used[@H_675_42@5003]; 25 26 int V; 27 struct P 28 { 29 int x; 30 int y; 31 }; 32 P a[@H_675_42@5003]; 33 double cal(P a,P b) 34 { 35 return sqrt((double)(a.x-b.X)*(a.x-b.X)+(double)(a.y-b.y)*(a.y-b.y)); 36 } 37 double MST() 38 { 39 _for(i,@H_675_42@1,V+@H_675_42@1) 40 { 41 mincost[i] = INF; 42 used[i] = false; 43 } 44 45 mincost[@H_675_42@1] = @H_675_42@0; 46 double res = @H_675_42@0; 47 48 while(@H_675_42@1) 49 { 50 int v = -@H_675_42@1; 51 _for(u,V+@H_675_42@1) 52 if(!used[u] && (v==-@H_675_42@1 || mincost[u] < mincost[v])) 53 v = u; 54 55 if(v==-@H_675_42@1) break; 56 used[v] = true; 57 res += mincost[v]; 58 59 _for(u,V+@H_675_42@1) 60 mincost[u] = min(mincost[u],cal(a[v],a[u])); 61 } 62 return res; 63 } 64 65 int main() 66 { 67 V = read(); 68 _for(i,V+@H_675_42@1) 69 a[i].x = read(),a[i].y = read(); 70 71 printf("%.2lf\n",MST()); 72 return @H_675_42@0; 73 }
以上是大佬教程为你收集整理的P1265-公路修建全部内容,希望文章能够帮你解决P1265-公路修建所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。