题意:给一张由白边和黑边构成的无向图,求是否存在一个生成树,使白边的数量为一个斐波那契数。

分析:白边权值为1,黑边权值为0。求出该图的最小生成树和最大生成树,若这两个值之间存在斐波那契数,则可以,若不存在或者所给的图不是连通图,则不行。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;
typedef long long LL;
set<int> dp; struct Edge{
int u,v,w;
}edge[maxn<<1];
int n,m; bool cmp (const Edge & x,const Edge & y) {
return x.w<y.w;
} bool cmp2(const Edge &x, const Edge &y) {
return x.w>y.w;
} int fa[maxn];
void init()
{
for(int i=0;i<=n;++i) fa[i] = i;
} int Find(int x)
{
return fa[x] ==x ? x: fa[x] = Find(fa[x]);
} void Union(int x,int y)
{
int fx = Find(x), fy = Find(y);
fa[fx] = fy;
} int kruskal()
{
init();
int res = 0, cnt = 0;
for(int i=1,u,v,w;i<=m;++i){
u =edge[i].u, v= edge[i].v, w =edge[i].w;
if(Find(u)!=Find(v)){
Union(u,v);
res += w;
++cnt;
if(cnt>=n-1) break;
}
}
if(cnt<n-1) return -1;
return res;
} int kruskal2()
{
init();
int res = 0, cnt= 0;
for(int i=m,u,v,w;i>=1;--i){
u =edge[i].u, v= edge[i].v, w =edge[i].w;
if(Find(u)!=Find(v)){
Union(u,v);
res += w;
++cnt;
if(cnt>=n-1) break;
}
}
if(cnt<n-1) return -1;
return res;
} int fib[maxn];
int pt; void pre()
{
fib[1] = 1, fib[2] = 2;
dp.insert(1);
dp.insert(2);
int i;
for(i=3;i<maxn;++i){
fib[i] = fib[i-1] + fib[i-2];
dp.insert(fib[i]);
if(fib[i]>100000) break;
}
} int main()
{
int T,cas=1;
scanf("%d",&T);
pre();
while(T--){
scanf("%d %d",&n, &m);
for(int i=1;i<=m;++i){
scanf("%d %d %d",&edge[i].u, &edge[i].v, &edge[i].w);
}
sort(edge+1,edge+m+1,cmp); int t1 = kruskal();
int t2 = kruskal2();
if(t1>t2) swap(t1,t2); printf("Case #%d: ",cas++);
bool f = false;
for(int i=t1;i<=t2;++i){
if(dp.find(i)!=dp.end()){
f = true;
break;
}
}
if(f) printf("Yes\n");
else printf("No\n");
}
return 0;
}

HDU - 4786 Fibonacci Tree (MST)的更多相关文章

  1. hdu 4786 Fibonacci Tree (2013ACMICPC 成都站 F)

    http://acm.hdu.edu.cn/showproblem.php?pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) ...

  2. HDU 4786 Fibonacci Tree(生成树,YY乱搞)

    http://acm.hdu.edu.cn/showproblem.php? pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others ...

  3. HDU 4786 Fibonacci Tree 最小生成树

    Fibonacci Tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4786 Description Coach Pang is intere ...

  4. HDU 4786 Fibonacci Tree

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) P ...

  5. HDU 4786 Fibonacci Tree (2013成都1006题)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. hdu 4786 Fibonacci Tree(最小生成树)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  7. 【HDU 4786 Fibonacci Tree】最小生成树

    一个由n个顶点m条边(可能有重边)构成的无向图(可能不连通),每条边的权值不是0就是1. 给出n.m和每条边的权值,问是否存在生成树,其边权值和为fibonacci数集合{1,2,3,5,8...}中 ...

  8. HDU 4786 Fibonacci Tree 生成树

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4786 题意:有N个节点(1 <= N <= 10^5),M条边(0 <= M <= ...

  9. hdu 4786 Fibonacci Tree 乱搞 智商题目 最小生成树

    首先计算图的联通情况,如果图本身不联通一定不会出现生成树,输出"NO",之后清空,加白边,看最多能加多少条,清空,加黑边,看能加多少条,即可得白边的最大值与最小值,之后判断Fibo ...

随机推荐

  1. Linux心得记录

    2014.4.8 linux环境下如何删除一个目录? rm -r linux本身提供删除目录命令——rmdir,但是如果你要删除的目录中含有子目录或者子文件,那么该命令会提示“删除失败:目录非空“也就 ...

  2. SQL语句,标准表达式中数据类型不匹配

    id索引进行数据查询时提示错误! 标准表达式中数据类型不匹配. 两边的单引号去掉就好了,否则是在使用文本型. 改为:去掉两个单引号 ok,成功!

  3. Socket长连接和短连接的区别

    https://blog.csdn.net/jasonjwl/article/details/52085264 短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进 ...

  4. openssl之EVP系列之8---EVP_Digest系列函数具体解释

    openssl之EVP系列之8---EVP_Digest系列函数具体解释     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作 ...

  5. jQuery插件手把手教会(一)

    jQuery插件开发教程  ——让你的jQuery水平提升一个台阶 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台 ...

  6. 简单是Jedis实例(相对连接池而言)

    在引入相关jar包后,只要new一个Jedis对象,就能做redis相关操作了.以下是一个简单的jedis实例: package com.pptv.redis; import java.util.Ar ...

  7. shell脚本学习总结12--系统信号

    信号是Linux系统中一种进程通信机制.我们可以使用特定的信号来中断进程.每一种信号都同一个整数值相关联. kill命令可用来想进程发送信号,而trap命令用来处理所接收的信号. kill 列出所有可 ...

  8. 面试题思考:Java RMI与RPC,JMS的比较

    RPC:(Remote Procedure Call)  被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异. 支持多语言 RMI:(Remote Method Invo ...

  9. ISP (互联网服务提供商)

    ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务.信息业务.和增值业务的电信运营商. ICP(Internet Content Pro ...

  10. 【Python之路】Python目录

    Python基础1 -- Python由来.Python种类.编码方式, Python基础2 -- Python运算符.数据类型.enumerate.range.for循环 python基础3 -- ...