http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=45524

NY在自己的花园里养了很多猫。有一天,一个巫婆在N个点设置了魔法,然后有M条关系,每一条在两个点之间有栅栏。

NY需要损坏这些栅栏但是需要栅栏长度这么多神奇的水,因为这种水很昂贵所以希望水用的越少越好。输出最少花费。

输入N,M表示N个点,接下来N行每行一个点的坐标,接下来M行每行两个数表示x,y之间有栅栏相连。

没有栅栏会交叉,每个圈都至少有一只猫。

题目意思就是如果图产生了圈就要把一些边去掉,破坏这个圈,问需要破坏的边的最小长度。

那么每次并查集的时候只要判断在同一个连通分量那么就需要破坏掉这条边,累加即可。因为不会有重边,所以

按边的权值从大到小或者从小到大都可以。

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std; struct node
{
int x,y,id;
};
struct edge
{
int u,v;
double cost;
edge() {}
edge(int x,int y,double z)
{
u=x;
v=y;
cost=z;
}
bool operator <(const edge& a) const
{
return cost>a.cost;
}
}; edge es[];
int par[];
node p[];
int n,m;
void init()
{
for(int i=;i<=n;i++) par[i]=i;
} int find(int x)
{
return x==par[x]?x:par[x]=find(par[x]);
} void unite(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y) par[x]=y;
} double dis(int a,int b)
{
return sqrt(1.0*(p[a].x-p[b].x)*(p[a].x-p[b].x)+1.0*(p[a].y-p[b].y)*(p[a].y-p[b].y));
} double kruskal()
{
sort(es,es+m);
//for(int i=0;i<m;i++) printf("%d %d %lf\n",es[i].u,es[i].v,es[i].cost);
double s=;
for(int i=;i<m;i++)
{
edge e=es[i];
if(find(e.u)!=find(e.v))
{
unite(e.u,e.v);
}
else
{
s+=e.cost;
}
}
return s;
}
int main()
{
//freopen("a.txt","r",stdin);
int a,b;
double c,sum;
while(~scanf("%d%d",&n,&m))
{
init();
sum=;
for(int i=;i<=n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
}
for(int i=;i<m;i++)
{
scanf("%d%d",&a,&b);
c=dis(a,b);
es[i]=edge(a,b,c);
}
printf("%.3lf\n",kruskal());
}
return ;
}

最新文章

  1. 使用Monit监控本地进程
  2. VS 错误解决(项目-属性-启用调试器)
  3. IOS基础之 (十一) 内存管理 ARC
  4. LR中日志设置和日志函数
  5. 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 &quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll&quot; 上。解决方法
  6. jsp+bean+servlet 案例代码
  7. session_start保存的客户端cookie的值什么时候改变
  8. 运算符重载 C++ 编程思想
  9. 舶来品P2P理财 能否成为“好声音”式好生意? 转
  10. MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试
  11. validate的使用
  12. 后端自动化版本管理,再也不用改URL了!
  13. Python Web-第四周-Programs that Surf the Web(Using Python to Access Web Data)
  14. 初识Redis系列之三:Redis支持的数据类型及使用
  15. angular 引入ocLazyLoad实现js、controller懒加载
  16. Cannot forward to error page for request ......
  17. GoDaddy账户间域名转移PUSH以及ACCEPT接受域名过户方法
  18. python 数据类型 之 利用 dict 模仿 switch语句功能
  19. OpenGL ES 光照模型之——漫反射光(RenderMonkey测试,地球日出效果)
  20. gp数据库停止

热门文章

  1. 【Python】可变对象和不可变对象
  2. 剑指offer--面试题23
  3. NYOJ-214 单调递增子序列(二) TLE 分类: NYOJ 2014-01-28 22:57 171人阅读 评论(0) 收藏
  4. CSS中的视觉格式化模型
  5. PE文件信息获取工具-PEINFO
  6. 不定义JQuery插件,不要说会JQuery
  7. SQL分页查询总结{转}
  8. POJ 3978 Primes(素数筛选法)
  9. POJ 3320
  10. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 2(Big Number)