洛谷 P2212 [USACO14MAR]浇地Watering the Fields
2017-10-22 11:16
375 查看
题解:计算欧几里得距离,Krusal加入边权大于等于c的边,统计最后树的边权和。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 2009 using namespace std; int n,c,cnt,tot,ans; int xi[maxn],yi[maxn],fa[maxn]; struct Edge{ int x,y,z; }e[maxn*maxn]; bool cmp(Edge a,Edge b){ return a.z<b.z; } int f(int x){ return fa[x]==x?x:fa[x]=f(fa[x]); } int dis(int i,int j){ return (xi[i]-xi[j])*(xi[i]-xi[j])+(yi[i]-yi[j])*(yi[i]-yi[j]); } int main(){ scanf("%d%d",&n,&c); for(int i=1;i<=n;i++){ fa[i]=i; scanf("%d%d",&xi[i],&yi[i]); for(int j=1;j<i;j++){ e[++cnt].x=i;e[cnt].y=j;e[cnt].z=dis(i,j); } } sort(e+1,e+cnt+1,cmp); for(int i=1;i<=cnt;i++){ if(e[i].z<c)continue; int fx=f(e[i].x),fy=f(e[i].y); if(fx!=fy){ tot++; fa[fx]=fy; ans+=e[i].z; if(tot==n-1)break; } } if(tot==n-1) printf("%d\n",ans); else puts("-1"); return 0; }AC
相关文章推荐
- 洛谷P2212 [USACO14MAR]浇地Watering the Fields
- P2212 [USACO14MAR]浇地Watering the Fields
- P2212 [USACO14MAR]浇地Watering the Fields 洛谷
- bzoj3479 [Usaco2014 Mar]Watering the Fields
- bzoj3479 [Usaco2014 Mar]Watering the Fields
- 洛谷 P2115 [USACO14MAR]破坏Sabotage
- bzoj 3479: [Usaco2014 Mar]Watering the Fields
- BZOJ3479: [Usaco2014 Mar]Watering the Fields
- 2014.3 USACO月赛T1 Watering the Fields
- bzoj3479【Usaco2014 Mar】Watering the Fields
- BZOJ_3479_[Usaco2014 Mar]Watering the Fields_Prim
- 洛谷P1344 [USACO4.4]追查坏牛奶Pollutant Control(网络流, 最大流最小割)
- 【USACO14FEB】洛谷3102 Secret Code
- 【USACO13DEC】洛谷3094 Vacation Planning
- 【搜索】洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace
- 【递推】洛谷 P1216 [USACO1.5]数字三角形 Number Triangles
- |洛谷|模拟|P1203 [USACO1.1]坏掉的项链Broken Necklace
- 【洛谷 1353】 【USACO 08 JAN】 跑步 Running
- 【题解】洛谷P2740 poj1273 [USACO4.2]草地排水Drainage Ditches
- 洛谷——P1209 [USACO1.3]修理牛棚 Barn Repair