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

分析:白边权值为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. [转]Shell脚本中发送html邮件的方法

    <span "="">作为运维人员,免不了要编写一些监控脚本,并将监控结果及时的发送出来.那么通过邮件发送是比较常用的一种通知方式了.通常的,如果需要发送的内 ...

  2. JavaScript的arguements

    ---恢复内容开始--- arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 messa ...

  3. python3----输出所有大小写字母及数字

    1. 用一行输出所有大(小)写字母,以及数字 print([chr(i) for i in range(65, 91)]) # 所有大写字母 print([chr(i) for i in range( ...

  4. UIScrollView小记

    视图的滚动过程,其实是在不断修改原点坐标.当手指触摸后,ScrollView会暂时拦截触摸事件,使用一个计时器.假如在计时器到点后没有发生手指移动事件,那么ScrollView发送tracking e ...

  5. JS-表单提交检查表单字数方法

    解决方法: //作用于整个html中 function check(form) { //topic是input的id,descrip是textarea的id var topic = $("# ...

  6. poj_3415 后缀数组+单调栈

    题目大意 定义字符串T的子串T(i, k)=TiTi+1...Ti+k-1, 1≤i≤i+k-1≤|T|. 给定两个字符串A和B,定义集合S为S = {(i, j, k) | k≥K, A(i, k) ...

  7. zoj3696(泊松分布)

    p(k)=(y^k) / (k!) * e^(-y) 其中的y就是平均值 k就是我们要求的大小. Alien's Organ Time Limit: 2 Seconds      Memory Lim ...

  8. C#全角半角转换输出解决方法

    Microsoft.VisualBasic 命名空间 Strings 模块 StrConv 函数就具有大写/小写.全角/半角.中文简体/繁体等转换功能,字符串转换应该说是VB.NET的强项,是这样的: ...

  9. servlet容器与web容器的概念

    一般的说法是这样的,servlet容器的主要任务是管理servlet的生命周期.而web容器更准确的说应该叫web服务器,它是来管理和部署 web应用的.还有一种服务器叫做应用服务器,它的功能比web ...

  10. HTTP Headers Client Identification

    用户信息通过HTTP头部承载:不能实现用户唯一性标识. w HTTP The Definitive Guide Table 11-1 shows the seven HTTP request head ...