/*
题意 :有一些边权值为1和0,判断是否存在一个生成树使得他的总权值为一个斐波那契数。
解法:建立一个最小生成树向里面加权值为1的边替换为0的边,保证原来的联通。因为权值为1,可直接求出最大生成树和最小生成树。
判断他们中间是否有斐波那契数即可,当然要先判断是否可以构成一个生成树。
这个我刚开始忘判断了。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 110000
struct node
{
int u,v,w;
} bian[N];
int f[N*2],flag[N*2],pre[N];
int cmp(const void *a,const void *b)
{
return (*(struct node *)a).w-(*(struct node *)b).w;
}
int find(int x)
{
if(x!=pre[x])
pre[x]=find(pre[x]);
return pre[x];
}
int cmpp(const void *a,const void *b)
{
return (*(struct node *)b).w-(*(struct node *)a).w;
}
int main()
{
int t,m,n,i,j=0,k,suma,sumb,d;
memset(flag,0,sizeof(flag));
f[0]=1;
f[1]=1;
flag[1]=1;
for(i=2; i<=25; i++)
{
f[i]=f[i-1]+f[i-2];
flag[f[i]]=1;
// printf("%d ",f[i]);
}
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=0; i<m; i++)
scanf("%d%d%d",&bian[i].u,&bian[i].v,&bian[i].w);
qsort(bian,m,sizeof(bian[0]),cmp);
for(i=1; i<=n; i++)
pre[i]=i;
k=0;
suma=0;
for(i=0; i<m&&k<n-1; i++)
{
int u=find(bian[i].u);
int v=find(bian[i].v);
if(u!=v)
{
pre[u]=v;
k++;
suma+=bian[i].w;
}
}
if(i==m&&k!=n-1) {//注意判断无法生成最小生成树的条件
printf("Case #%d: No\n",++j);
continue;
}
for(i=1; i<=n; i++)
pre[i]=i;
qsort(bian,m,sizeof(bian[0]),cmpp);
k=0;
sumb=0;
for(i=0; i<m&&k<n-1; i++)
{
int u=find(bian[i].u);
int v=find(bian[i].v);
if(u!=v)
{
pre[u]=v;
k++;
sumb+=bian[i].w;
}
}
d=0;
for(i=suma; i<=sumb; i++)
if(flag[i]){
d=1;
break;
}
if(d)
printf("Case #%d: Yes\n",++j);
else
printf("Case #%d: No\n",++j);
}
return 0;
}

最新文章

  1. 来吧,HTML5之基础标签(下)
  2. TODO:浅谈pm2基本工作原理
  3. reason: &#39;[&lt;__NSDictionary0 0x7fda88f00c90&gt; setValue:forUndefinedKey:]: this class is not key value c
  4. hdu 4006 优先队列 2011大连赛区网络赛F **
  5. Spring配置文件解析--bean属性
  6. 未定义标识符_ConnectionPtr
  7. JavaScript中setTimeout和setInterval的使用
  8. SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF
  9. 必须要推荐的浏览器插件---作者:marsggbo
  10. Akka(6): become/unbecome:运算行为切换
  11. 使用XAMPP和DVWA在Windows7上搭建渗透测试环境
  12. TS - 问题分析与处理的一般性方法
  13. Java基础——Oracle(七)
  14. spring揭密学习笔记(3)-spring ioc容器:掌管大局的IoC Service Provider
  15. java监听器(Listener)学习笔记
  16. 「Vue」实用组件
  17. perf + 火焰图用法 小结
  18. python之选择排序
  19. socket相关的开机初始化分析
  20. HDU 2710

热门文章

  1. 安装nghttp2 报错error: Libtool library used but &#39;LIBTOOL&#39; is undefined
  2. java 锁机制(synchronized 与 Lock)
  3. P2068 统计和
  4. JavaScript入门三
  5. 【洛谷4933】大师(DP)
  6. day03_12/13/2016_bean属性的设置之构造器方式注入
  7. [转]mysql索引详解
  8. [ BZOJ 4318 &amp; 3450 / CodeForces 235 B ] OSU!
  9. activity间传递参数
  10. SQL基本操作——COVERT