hdu3938(最小生成树,推荐)
题意描述:简单的讲就是,给你一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a、b两点之间的多条路径中的最长的边最小值!
思路:这题目有多个询问,肯定要用离线输出。思路的话,我们只需要从小到达枚举边的长度,如果两个并查集没有连通,那么联通之后的路径条数就应该是(num[a]*num[b])........
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int father[10005],num[10005];
- struct node
- {
- int v1,v2;
- int dis;
- }s[50005];
- struct node1
- {
- int ans;
- int sum;
- int id;
- }t[10005];
- int cmp(const node a,const node b)
- {
- if(a.dis<b.dis)
- return 1;
- else
- return 0;
- }
- int cmp1(const node1 a,const node1 b)
- {
- if(a.sum<b.sum)
- return 1;
- else
- return 0;
- }
- int cmp2(const node1 a,const node1 b)
- {
- if(a.id<b.id)
- return 1;
- else
- return 0;
- }
- int find(int x)
- {
- int root,i=x;
- while(x!=father[x])
- x=father[x];
- root=x;
- x=i;
- while(x!=father[x])
- {
- i=father[x];
- father[x]=root;
- num[root]+=num[x];
- num[x]=0;
- x=i;
- }
- return root;
- }
- int liantong(int x,int y)
- {
- father[x]=y;
- int k=num[y]*num[x];
- num[y]+=num[x];
- num[x]=0;
- return k;
- }
- int main()
- {
- int n,m,q;
- while(scanf("%d%d%d",&n,&m,&q)>0)
- {
- for(int i=0;i<=n;i++)
- {
- father[i]=i;
- num[i]=1;
- }
- int maxn=0;
- for(int i=0;i<m;i++)
- {
- scanf("%d%d%d",&s[i].v1,&s[i].v2,&s[i].dis);
- maxn=s[i].dis;
- }
- sort(s,s+m,cmp);
- //int q;
- //scanf("%d",&q);
- //q=
- for(int i=0;i<q;i++)
- {
- scanf("%d",&t[i].sum);
- t[i].id=i;
- }
- sort(t,t+q,cmp1);
- int j=0;
- for(int i=0;i<q;i++)
- {
- if(i==0)
- t[i].ans=0;
- else
- t[i].ans=t[i-1].ans;
- while(j<m&&t[i].sum>=s[j].dis)
- {
- int tmp=s[j].v1;
- int tmp1=s[j].v2;
- tmp=find(tmp);
- tmp1=find(tmp1);
- if(tmp!=tmp1)
- {
- t[i].ans+=liantong(tmp,tmp1);
- }
- j++;
- }
- }
- sort(t,t+q,cmp2);
- for(int i=0;i<q;i++)
- printf("%d\n",t[i].ans);
- }
- return 0;
- }
hdu3938(最小生成树,推荐)的更多相关文章
- POJ推荐50题
此文来自北京邮电大学ACM-ICPC集训队 此50题在本博客均有代码,可以在左侧的搜索框中搜索题号查看代码. 以下是原文: POJ推荐50题1.标记“难”和“稍难”的题目可以看看,思考一下,不做要求, ...
- 树的Prufer 编码和最小生成树计数
Prufer数列 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2.它可以通过简单的迭代方 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- 最小生成树——Prim算法和Kruskal算法
洛谷P3366 最小生成树板子题 这篇博客介绍两个算法:Prim算法和Kruskal算法,两个算法各有优劣 一般来说当图比较稀疏的时候,Kruskal算法比较快 而当图很密集,Prim算法就大显身手了 ...
- 最小生成树(prime算法 & kruskal算法)和 最短路径算法(floyd算法 & dijkstra算法)
一.主要内容: 介绍图论中两大经典问题:最小生成树问题以及最短路径问题,以及给出解决每个问题的两种不同算法. 其中最小生成树问题可参考以下题目: 题目1012:畅通工程 http://ac.jobdu ...
- 最小生成树 & 洛谷P3366【模板】最小生成树 & 洛谷P2820 局域网
嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...
- 最小生成树的kruskal、prim算法
kruskal算法和prim算法 都说 kruskal是加边法,prim是加点法 这篇解释也不错:这篇 1.kruskal算法 因为是加边法,所以这个方法比较合适稀疏图.要码这个需要先懂并查集.因为我 ...
- 最小生成树算法 prim kruskal两种算法实现 HDU-1863 畅通工程
最小生成树 通俗解释:一个连通图,可将这个连通图删减任意条边,仍然保持连通图的状态并且所有边权值加起来的总和使其达到最小.这就是最小生成树 可以参考下图,便于理解 原来的图: 最小生成树(蓝色线): ...
- POJ 2031 Building a Space Station【经典最小生成树】
链接: http://poj.org/problem?id=2031 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
随机推荐
- ROS学习(五)—— 编译ROS Package
提前准备: 记得事先source你的环境配置(setup)文件,在Ubuntu中的操作指令如下. source /opt/ros/kinetic/setup.bash 一.使用catkin_make ...
- 在iOS开发的Quartz2D使用中实现图片剪切和截屏功能
原文 http://www.jb51.net/article/75671.htm 图片剪切一.使用Quartz2D完成图片剪切1.把图片显示在自定义的view中先把图片绘制到view上.按照原始大小 ...
- kafka中处理超大消息的一些处理
Kafka设计的初衷是迅速处理短小的消息,一般10K大小的消息吞吐性能最好(可参见LinkedIn的kafka性能测试).但有时候,我们需要处理更大的消息,比如XML文档或JSON内容,一个消息 ...
- java 高性能读模式(译)
原文地址:http://tutorials.jenkov.com/java-performance/read-patterns.html 好久没翻译了,逛知乎,无意间发现的一个链接,写的太好了,而且内 ...
- js中文乱码问题,编码设为utf-8,但还是乱码问题。
dw中编辑js的时候使用另存为菜单,在存储的时候勾选上一个叫[包括Unicode签名(BOM)(S)]的选项,然后存储.再次在浏览器源码中查看的时候js的中文就正常显示了,查看属性,编码也是UTF-8 ...
- SharePoint 2013 创建 Site Collection
在之前的文章中,通过SharePoint Central Administration 创建了Web Application.在这篇文章中将继续SharePoint 2013之旅——还是以Step B ...
- FreeSWITCH取消Digest校验流程
方法一.通过使用acl配置 <list name="domains" default="deny"> <!-- domain= is spec ...
- POJ 2115:C Looooops
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19536 Accepted: 5204 Descr ...
- Javascript MVC 学习笔记(一) 模型和数据
写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...
- VS2005快捷键大全
快捷键功能 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图 ...