Description

Awson是某国际学校信竞组的一只菜鸡。他们班主任F老师喜欢带他们去爬爬唷喽山。登顶后,Awson有了个奇怪的发现。

山腰上有N(1<=N<=100)个村庄,这些村庄可以用平面坐标(X,Y)刻画。假设要给这N个村庄供水。已知1号村庄内有一个处理水厂, 从此处可以输水给其他各个村庄。现在给出M(1<=M<=10000)种修水渠的方案,每种方案的水渠连接两个村庄U,V。由于地势等其他原 因,水的运输是单向的,即只能从U运输到V。水渠是笔直的,即水渠的长度就是U,V两村庄的欧式距离。因为Awson是一个善于发现问题、提出问题,但不 喜欢解决问题的人。所以他找到了你,烦请你设计出能够将水输送到所有村庄的方案,并且使水渠总长度最小。

Input

第1行:两个整数,N,M。

接下来N行,每行两个整数,第i行Xi,Yi,表示村庄的坐标。

再接下来M行,每行两个整数,第i行Ui,Vi,表示Ui,Vi两村庄间有一条从Ui到Vi的修水渠方案。

Output

共1行,1个整数,表示使所有机房连上网的费用最小值。

Sample Input1

4 60 64 60 07 201 21 32 33 43 13 2

Sample Output1

31.19

Sample Input2

4 3
0 0
1 0
0 1
1 2
1 3
4 1
2 3

Sample Output2

poor Awson

Hint

样例解释:

对于样例1:选择第1、2、4方案,长度最小,其为31.19;

对于样例2:没有方案使其连通。

数据规模:

40%的数据:1<=N<=50,1<=M<=2500;

100%的数据:1<=N<=100,1<=M<=10000,1<=X,Y<=10000,数据不保证无自环,不保证无重边、回边。

题解

朱刘算法裸题,当模板存着。

 #include<map>
 #include<queue>
 #include<stack>
 #include<vector>
 #include<ctime>
 #include<cmath>
 #include<cstdio>
 #include<string>
 #include<cstdlib>
 #include<cstring>
 #include<iostream>
 #include<algorithm>
  using namespace std;
 ;

 struct node
 {
     int x,y;
 }pos[N+];
 struct tt
 {
     int u,v;
     double c;
 }edge[N*N+];
 int n,m,u,v;
 inline double Dist(int u,int v);

 ];
 ];
 ];
 ],cnt;
 double ZLEdmons();

 int main()
 {
     scanf("%d%d",&n,&m);
     ;i<=n;i++) scanf("%d%d",&pos[i].x,&pos[i].y);
     ]={};
     ;i<=m;i++)
     {
         scanf("%d%d",&u,&v);
         edge[i].v=v;
         edge[i].u=u;
         edge[i].c=Dist(u,v);
         ;
     }
     ;i<=n;i++) if (!in[i])
     {
         printf("poor Awson\n");
         ;
     }
     printf("%.2lf\n",ZLEdmons());
     ;
 }

 inline double Dist(int u,int v){return sqrt((pos[u].x-pos[v].x)*(pos[u].x-pos[v].x)+(pos[u].y-pos[v].y)*(pos[u].y-pos[v].y));}
 double ZLEdmons()
 {
     ;
     ;
     while (true)
     {
         memset(,sizeof(in));
         ;i<=m;i++)
         {
             if (edge[i].c<in[edge[i].v]&&edge[i].u!=edge[i].v)
             {
                 in[edge[i].v]=edge[i].c;
                 pre[edge[i].v]=edge[i].u;
             }
         }
         ;
         ;
         memset(id,-,sizeof(id));
         memset(vis,-,sizeof(vis));
         ;i<=n;i++)
         {
             ans+=in[i];
             v=i;
             )
             {
                 vis[v]=i;
                 v=pre[v];
             }
             )
             {
                 id[v]=++cnt;
                 for (int u=pre[v];u!=v;u=pre[u]) id[u]=cnt;
             }
         }
         ) break;
         ;i<=n;i++) ) id[i]=++cnt;
         ;i<=m;i++)
         {
             v=edge[i].v;
             edge[i].u=id[edge[i].u];
             edge[i].v=id[edge[i].v];
             if (edge[i].u!=edge[i].v) edge[i].c-=in[v];
         }
         n=cnt;
         root=id[root];
     }
     return ans;
 }

[Awson原创]修水渠(canal)的更多相关文章

  1. [Awson原创]网络(network)

    Description Awson是某国际学校信竞组的一只菜鸡.学校为了使教育信息化,打算在学校内新建机房,并且为机房联网.但吝啬的学校又不想花费过多的开销,于是将规划 网络路线的任务交给了信竞组的A ...

  2. [Awson原创]洪水(flood)

    Description Awson是某国际学校信竞组的一只菜鸡.今年,该市发生了千年难遇的洪水.被监禁在学校的Awson不甘怠堕,想将自己投入到公益服务事业中去.这天,他偷了H老师的小电驴,偷偷地溜出 ...

  3. hdoj 1532 Drainage Ditches【最大流模板题】

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. HDU 4009 Transfer water

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...

  5. 树的问题小结(最小生成树、次小生成树、最小树形图、LCA、最小支配集、最小点覆盖、最大独立集)

    树的定义:连通无回路的无向图是一棵树. 有关树的问题: 1.最小生成树. 2.次小生成树. 3.有向图的最小树形图. 4.LCA(树上两点的最近公共祖先). 5.树的最小支配集.最小点覆盖.最大独立集 ...

  6. HDU 4009 Transfer water(最小树形图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...

  7. Canal v1.1.4版本避坑指南

    前提 在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的): 这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道.管道)上线一段时间,不出坑的时候风平浪静 ...

  8. K8S Canal基于Prometheus进行实时指标监控

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 部署canal的prometheus监控到k8s中 1.grafana的docker部署方式:https://grafana.com/gr ...

  9. ( [原创] 4s摄像头出现的问题及解决办法集锦。

    [原创] 4s摄像头出现的问题及解决办法集锦. [复制链接]     HPagani 34主题 126帖子 13人气 级别: 青苹果 帖子 126 经验 160 精华 人气 13 粉丝1 发消息   ...

随机推荐

  1. RDD概念、特性、缓存策略与容错

    一.RDD概念与特性 1. RDD的概念 RDD(Resilient Distributed Dataset),是指弹性分布式数据集.数据集:Spark中的编程是基于RDD的,将原始数据加载到内存变成 ...

  2. alpha-咸鱼冲刺day7(后续一波)-紫仪

    总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在写登陆+注册ing 注册搞出来了!!!!!!!!QAQ(喜极而泣!!!!.jpg) 四,问题困难 数据流程大概是搞 ...

  3. Bate敏捷冲刺每日报告--day5

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...

  4. C语言——第六周作业

    题目 题目一:高速公路超速处罚 1.实验代码 #include <stdio.h> int main() { int speed,maxspeed; double x; scanf(&qu ...

  5. django restful 1-在线Python编辑器

    客户端(浏览器)----> 前端页面-----> 后端处理数据,并把数据以 json 形式发送到前端 online_app.py from django.conf import setti ...

  6. 《招一个靠谱的移动开发》iOS面试题及详解(上篇)

    以下问题主要用于技术的总结与回顾 主要问题总结 单例的写法.在单利中创建数组应该注意些什么. NSString 的时候用copy和strong的区别. 多线程.特别是NSOperation 和 GCD ...

  7. Django REST framework+Vue 打造生鲜超市(一)

    一.项目介绍 1.1.掌握的技术 Vue + Django Rest Framework 前后端分离技术 彻底玩转restful api 开发流程 Django Rest Framework 的功能实 ...

  8. Column Addition~DP(脑子抽了,当时没有想到)

    Description A multi-digit column addition is a formula on adding two integers written like this:

  9. 为什么 asnyc await 可以提高web程序的吞吐量

    (转网上一段话) Web程序天生就是多线程的,且web线程都是跑的线程池线程(使用线程池线程是为了避免不断创建.销毁线程所造成的资源成本浪费),而线程池线程可使用线程数量是一定的,尽管可以设置,但它还 ...

  10. 多台linux主机之间建立免密通信

    多台linux主机之间设置免密通信 例:A 向 B设置免密通信 第一步 A生成密钥对 ssh-keygen -t rsa -t 指定秘钥的类型 rsa 秘钥类型 密钥目录:/root/.ssh/(如果 ...