题目链接:https://vjudge.net/problem/Aizu-2224

题目大意:

  先给出 N 个点的坐标(x,y),这N个点之间有且只有M条边,接下来给出 M 条边的两端点,每条边对应的边权就是两端点的距离,断开一条边所需的花费就是这条边的边权。现在我们要断开一些边,使得剩余的边没有办法围成圈,但又要使得总花费最小。求所需的最小花费。

解题思路:

  要是剩余的边没有办法围成圈,那么其实就是想要让剩余的边能够组成一棵树,所需的总花费其实就是除了这棵树以外的边的所有边权,所以我们让这颗树的权值最大,那么总花费(= 所有边的边权 - 树的总权值)就会最小。利用正难则反的思路,我们把这个问题转变成一道求最大生成树裸题。

  Danger ! 记得考虑重边!

  Danger!数组要开得足够大!

AC代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <algorithm>
 5 using namespace std;
 6 const int maxn=10000+5;
 7 int fa[maxn];
 8 struct edge{
 9     int u,v;
10     double cost;
11 }es[maxn*maxn];
12 struct node{
13     int x,y;
14 }cord[maxn];
15 bool cmp(const edge &a,const edge &b){
16     return a.cost>b.cost;
17 }
18 double cal(node a,node b){
19     return sqrt((double)(a.x-b.x)*(a.x-b.x)+(double)(a.y-b.y)*(a.y-b.y));
20 }
21 int finds(int rt){
22     if(fa[rt]==rt)  return rt;
23     return fa[rt]=finds(fa[rt]);
24 }
25 bool same(int a,int b){
26     return finds(a)==finds(b);
27 }
28 int main(){
29     int N,M;
30     double tot=0.0;
31     scanf("%d%d",&N,&M);
32     for(int i=1;i<=N;i++)    scanf("%d%d",&cord[i].x,&cord[i].y);
33     for(int i=0;i<M;i++){
34         scanf("%d%d",&es[i].u,&es[i].v);
35         double c=cal(cord[es[i].u],cord[es[i].v]);
36         es[i].cost+=c;
37         tot+=c;
38     }
39     sort(es,es+M,cmp);
40     for(int i=1;i<=N;i++)    fa[i]=i;
41     double res=0.0;
42     for(int i=0;i<M;i++){
43         edge e=es[i];
44         if(!same(e.u,e.v)){
45             int t1=finds(e.u),t2=finds(e.v);
46             fa[t1]=t2;
47             res+=e.cost;
48         }
49     }
50     printf("%lf\n",tot-res);
51     return 0;
52 }

转载于:https://www.cnblogs.com/Blogggggg/p/7300516.html

Aizu - 2224相关推荐

  1. Aizu - 2224 Save your cats 最大生成树

    传送门:AOJ 2224 题意:有n个点和m条边,每条边有不同的权值,问最少花费多少删除边能使得图中没有圈. 思路:我们知道树是没有圈的,因此删边后的图一定是一棵树,我们想要删除的边权尽量小,就是要留 ...

  2. Aizu 2224 Save your cats

    题目链接 题意 猫被困在围栏里,问最少去掉多长的边,使所有猫逃出来. 问题转化为将N个图转化为树,因为树不会成环,树加上一条边就可以成环 AC 并查集 + prim 对于每个图,求它的最大生成树,总长 ...

  3. Save your cats Aizu - 2224 (最大生成树)

    题目: Problem C: Nicholas Y. Alford was a cat lover. He had a garden in a village and kept many cats i ...

  4. Save your cats Aizu - 2224(思维+最大生成树)

    传送门 题意: 给出一个图,这个图形封闭区域(可能多个可能一个也没有),问最少需要破坏多少边使得封闭区域不封闭.先给出每个点的坐标,然后给出每条边的关系. 题解: 这个题因为封闭区域可能一个可能多个可 ...

  5. BFS:图的最短路径  Aizu - 0558 ​​​​​​​Cheese

    Cheese Aizu - 0558 大意:在H * W的地图上有N个奶酪工厂,每个工厂分别生产硬度为1-N的奶酪.有一只老鼠准备从出发点吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工 ...

  6. Aizu - 0033 Ball

    这题书上写让用DFS--可是这一比较就出来啊-- Ball Aizu - 0033 図のように二股に分かれている容器があります.1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A か ...

  7. Nature会议:驾驭植物微生物组(21年10月22-24,在线,优惠截止9月24日)

    Nature会议:驾驭植物微生物组 Harnessing the Plant Microbiome 会议主页:https://conferences.nature.com/PlantMicrobiom ...

  8. Exhaustive Search Aizu - ALDS1_5_A

    Write a program which reads a sequence A of n elements and an integer M, and outputs "yes" ...

  9. Allocation Aizu - ALDS1_4_D

    You are given n packages of wi kg from a belt conveyor in order (i=0,1,-n−1). You should load all pa ...

最新文章

  1. matlab学习札记.20210122
  2. 开源——需要分享共享的无私精神
  3. 实战SSM_O2O商铺_21【商铺列表】Dao层开发
  4. 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍
  5. java http服务端例子_简单的用 Java Socket 编写的 HTTP 服务器应用
  6. ie8 object param没有效果_如何用php实现分页效果
  7. [codevs1105][COJ0183][NOIP2005]过河
  8. sqllite查询数据量_详解SQLite中的查询规划器
  9. mysql锁的基本类型_Mysql的锁
  10. No repository found containing,eclipse 自动更新erro 解决
  11. C++编写Windows服务程序
  12. Codeforces Round #572(div2)部分题解(A~C,E)
  13. 笔记本电脑的计算机名称在哪里看,如何查看笔记本电脑的IP地址
  14. High Performance Visual Tracking with Siamese Region Proposal Network全文翻译
  15. YOLOv3源码阅读之六:train.py
  16. 潜在解决方法-系统映像还原失败,找不到可用于恢复系统盘的磁盘
  17. 新闻发布及管理系统的设计与实现(论文+PPT+源码)
  18. 把计算机信息传到电视屏的方法,如何将电脑内容投屏到电视上?当贝市场完整版教程...
  19. 毛利率、净利率和成本利润率的区别是什么 ?
  20. 人工智能必看论文系列推荐(含神经网络,计算机视觉,AI,深度学习共计四十余篇)

热门文章

  1. 给新手学习MySQL的建议
  2. 性能优化——图片压缩、加载和格式选择
  3. token 生成详解
  4. 回滚保存点后究竟发生了什么?
  5. 174.Jewels and Stones
  6. att格式汇编指令_关于ATT汇编
  7. 【第一届“文翁杯”现场竞技赛】T2 —蜀石经(优先队列模拟)
  8. 使用 pynvml 得到显卡信息
  9. 潭州学院html学习(day02)
  10. 平均精度均值(Mean Average Precision, mAP)