HDOJ5441(图论中的并查集)
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int MAX_N=;
- const int MAX_V=;
- const int MAX_Q=;
- struct edge{
- int from,to,cost;
- }es[MAX_N];
- int V,E,Q;
- bool comp(const edge &e1,const edge &e2)
- {
- return e1.cost < e2.cost;
- }
- void getMap()
- {
- for(int i=;i<E;i++)
- {
- scanf("%d %d %d",&es[i].from,&es[i].to,&es[i].cost);
- }
- sort(es,es+E,comp);
- }
- int par[MAX_V];
- int nodes[MAX_V];
- void Init()
- {
- for(int i=;i<=V;i++)
- {
- par[i]=i;
- nodes[i]=;
- }
- }
- int Find(int x)
- {
- if(par[x]==x)
- return x;
- return par[x]=Find(par[x]);
- }
- struct Query{
- int limit;
- int index;
- }query[MAX_Q];
- bool comp1(Query q1,Query q2)
- {
- return q1.limit < q2.limit;
- }
- long long ans[MAX_Q];
- void Solve()
- {
- for(int i=;i<Q;i++)
- {
- scanf("%d",&query[i].limit);
- query[i].index=i;
- }
- sort(query,query+Q,comp1);
- long long sum=;
- int j=;
- for(int i=;i<Q;i++)
- {
- while(j<E&&query[i].limit>=es[j].cost)
- {
- int u=Find(es[j].from);
- int v=Find(es[j].to);
- if(u!=v)
- {
- sum+=*nodes[u]*nodes[v];
- par[u]=v;// 将u,v两集合合并,v为祖先
- nodes[v]+=nodes[u];
- }
- j++;
- }
- ans[query[i].index]=sum;
- }
- // 优化时间,将query全部输入之后再集体输出
- for(int i=;i<Q;i++)
- {
- printf("%I64d\n",ans[i]);
- }
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d %d %d",&V,&E,&Q);
- getMap();
- Init();
- Solve();
- }
- return ;
- }
HDOJ5441(图论中的并查集)的更多相关文章
- 【poj 1182】食物链(图论--带权并查集)
题意:有3种动物A.B.C,形成一个"A吃B, B吃C,C吃A "的食物链.有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类. ...
- 【poj 1962】Corporative Network(图论--带权并查集 模版题)
P.S.我不想看英文原题的,但是看网上题解的题意看得我 炒鸡辛苦&一脸懵 +_+,打这模版题的代码也纠结至极了......不得已只能自己翻译了QwQ . 题意:有一个公司有N个企业,分成几个网 ...
- 【poj 1984】&【bzoj 3362】Navigation Nightmare(图论--带权并查集)
题意:平面上给出N个点,知道M个关于点X在点Y的正东/西/南/北方向的距离.问在刚给出一定关系之后其中2点的曼哈顿距离((x1,y1)与(x2,y2):l x1-x2 l+l y1-y2 l),未知则 ...
- 【bzoj 1202】[HNOI2005] 狡猾的商人(图论--带权并查集+前缀和)
题意:一个账本记录了N个月以来的收入情况,现在有一个侦探员不同时间偷看到M段时间内的总收入,问这个账本是否为假账. 解法:带权并查集+前缀和. 判断账本真假是通过之前可算到的答案与当前读入的值是否 ...
- 【poj 1988】Cube Stacking(图论--带权并查集)
题意:有N个方块,M个操作{"C x":查询方块x上的方块数:"M x y":移动方块x所在的整个方块堆到方块y所在的整个方块堆之上}.输出相应的答案. 解法: ...
- 【NOIP 2015 D1 T2】信息传递(图论--带权并查集/bfs)
题目:有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学.游戏开始时,每人都只知道自己的生日.之后每一轮中, ...
- 【uva 247】Calling Circles(图论--Floyd 传递闭包+并查集 连通分量)
题意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出.(N≤25,L≤25,注意输出格式) 解法:由于N比较小所有n^2或n^3的复杂度都没有 ...
- 图论 Kruskal算法 并查集
#include<iostream> #include<cstring> #include<string> #include<cstdio> #incl ...
- 洛谷P1525 关押罪犯(并查集、二分图判定)
本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...
随机推荐
- spring bean标签常用属性
一.id属性 其名称,可以是任意名称,但不能包含特殊符号. 根据id得到配置对象. 二.class属性 创建对象所在的类名称 三.name属性 功能和id属性一样,但name属性值可以包含特殊属性 四 ...
- ros下单目相机校正
1. 安装对应的驱动与程序包. 图像对应包 http://wiki.ros.org/camera_calibration 在gitbub下载image_pipeline : ...
- FTP开启被动连接模式
在Linux环境下搭建ftp服务器,具体步骤见:http://www.cnblogs.com/zjiacun/p/6896803.html 配置被动连接的方法: 找到配置文件/etc/vsftpd/v ...
- CENTOS7 修改网卡名称为eth[012...],格式
具体操作是修改/etc/default/grub文件 在GRUB_CMDLINE_LINUX一行中添加net.ifnames=0 biosdevname=0 保存文件后然后运行 grub2-mkcon ...
- 了解CentOS服务器的基本信息
简单描述了如何从CPU.内存.硬盘性能.负载方面去了解自己工作的服务器性能.这个很重要,必须了解机器的方方面面才能提高在自己运维工作效率. 一.查看linux服务器cpu详情 查看物理cpu个数: [ ...
- Linux 3 -grep
七. grep家族: 1. grep退出状态: 0: 表示成功: 1: 表示在所提供的文件无法找到匹配的pattern: 2: 表示参数中提供的文件不存在. 见如下示例: /> grep 'ro ...
- mathjax
MathJax.Hub.Typeset() method. This will cause the preprocessors (if any were loaded) to run over the ...
- iOS UIImage UIImageView 展示图片 不变形 处理
展示图片 时候 固定 了 imageView 的大小 图片 也裁剪了 尽量保持比例 可是 还是失真 变形了 这张图 ui 要求展示的UIimageView 大小 是固定 的 ,传过来的 图片 是 ...
- Windows下Nginx的启动、停止等命令添加
Windows下Nginx的启动.停止等命令在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启动 ...
- Base64Util工具类
package com.qianmi.weidian.common.util; import java.io.*; /** * This class provides encode/decode fo ...