【最小生成树】【kruscal】hdu4786 Fibonacci Tree
假设这张图能够形成具有k条白边的生成树,
则易证k一定形成一个连续的区间[a,b],中间一定不会断开。要是断开……tm怎么可能。
所以求出a,b就好啦,人家都给你把白边赋成1了,直接跑一下最小生成树,再跑一下最大生成树即可咯。
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100010
struct Edge{
int u,v,w;
}edges[N];
bool cmp(const Edge &a,const Edge &b){
return a.w<b.w;
}
bool cm2(const Edge &a,const Edge &b){
return a.w>b.w;
}
int T,n,m,a[1010],mm;
int fa[N];
int findroot(int x){
return x==fa[x] ? x : fa[x]=findroot(fa[x]);
}
int kruscal(){
for(int i=1;i<=n;++i){
fa[i]=i;
}
int tot=0,sum=0;
for(int i=1;i<=m;++i){
int f1=findroot(edges[i].u),f2=findroot(edges[i].v);
if(f1!=f2){
fa[f1]=f2;
++tot;
sum+=edges[i].w;
if(tot==n-1){
return sum;
}
}
}
return -1;
}
int main(){
// freopen("f.in","r",stdin);
scanf("%d",&T);
a[1]=1; a[2]=2;
for(int i=3;;++i){
a[i]=a[i-1]+a[i-2];
if(a[i]>100000){
mm=i-1;
break;
}
}
for(int zu=1;zu<=T;++zu){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i){
scanf("%d%d%d",&edges[i].u,&edges[i].v,&edges[i].w);
}
sort(edges+1,edges+m+1,cmp);
int minn=kruscal();
sort(edges+1,edges+m+1,cm2);
int maxx=kruscal();
if(minn==-1 || maxx==-1){
printf("Case #%d: No\n",zu);
continue;
}
bool flag=0;
for(int i=1;i<=mm;++i){
if(a[i]>=minn && a[i]<=maxx){
flag=1;
printf("Case #%d: Yes\n",zu);
break;
}
}
if(!flag){
printf("Case #%d: No\n",zu);
}
}
return 0;
}
【最小生成树】【kruscal】hdu4786 Fibonacci Tree的更多相关文章
- hdu4786 Fibonacci Tree (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4786 题意:给定图的n个点和m条双向边,告诉你每条边的权值.权值为1表示该边是白边,权值为0表示该边为 ...
- hdu4786 Fibonacci Tree[最小生成树]【结论题】
一道结论题:如果最小生成树和最大生成树之间存在fib数,成立.不存在或者不连通则不成立.由于是01图,所以这个区间内的任何生成树都存在. 证明:数学归纳?如果一棵树没有办法再用非树边0边替代1边了,那 ...
- hdoj 4786 Fibonacci Tree【并查集+最小生成树(kruskal算法)】
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Fibonacci Tree(最小生成树,最大生成树)
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU 4786 Fibonacci Tree 最小生成树
Fibonacci Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4786 Description Coach Pang is intere ...
- hdu 4786 Fibonacci Tree(最小生成树)
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 4786 Fibonacci Tree (2013成都1006题)
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- POJ 4786 Fibonacci Tree
Fibonacci Tree Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...
- HDU 4786 Fibonacci Tree
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) P ...
随机推荐
- Maven学习笔记(一)
我们暂且可以把Maven理解成是一个项目构建与依赖管理的工具 为什么选用maven? 约定(惯例)优先原则,默认限定了项目目录结构 提供三方依赖管理(解决了依赖维护的问题) 提供了一致的项目构建管 ...
- monkey测试===Android测试工具Monkey用法简介(转载)
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey ...
- PhysX SDK src
PhysX SDK src Physx3.3 source code http://download.csdn.net/download/qq122252656/9427387 Nvidia CUDA ...
- mongodb-linux-x86_64
卷 DataDisk 的文件夹 PATH 列表卷序列号为 4A8E-D95CD:.│ 1.txt│ GNU-AGPL-3.0│ MPL-2│ README│ THIRD-PARTY-NOTI ...
- C基础 如何得到文件长度
引言 有一天看见看到返回文件长度代码返回值都是long,就感觉怪怪的, 一般32位long最大也就2G. 而大文件太多了, 一个Dota2安装包估计都得10多G吧. 一般C得到文件长度代码 /* * ...
- java8新特性视频、spring4.0视频讲解,javaee基础知识讲解等网址汇总
1.http://ke.atguigu.com/ 海量视频首页 2.http://ke.atguigu.com/course/56 java8新特性学习地址
- C#调用Excel报 error CS1969: 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
转自[http://blog.csdn.net/bodybo/article/details/43191319] 程序需要读取Exel文件,有如下代码段 object oMissing = Syste ...
- grep常见操作整理(更新)
提取邮箱和URL [root@test88 ~]# cat url_email.txt root@gmail.com,http://blog.peter.com,peter@qq.com [root@ ...
- jstorm系列-1:入门
一. Storm整体介绍 Storm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这 ...
- mongo数据库基本操作--python篇
连接数据库 MongoClient VS Connection class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB ...