题意:

N个点,M条边。每条边连接两个点u,v,且有一个权值c,c非零即一。

问能否将N个点形成一个生成树,并且这棵树的边权值和是一个fibonacii数。 (fibonacii数=1,2,3,5,8 .... )

思路:

若可以生成一棵树。则有最小生成树和最大生成树。假设已经生成了最小MST  P 和最大MST  Q。

将P更换一条边可以得到另一棵生成树,边权和不是和P相等就是比P的边权和大1。(因为边值非零即一)。同理搞下去....一定可以得到Q。

所以P的边权和到Q的边权和之间的所有值都能得到。故判断之间是否存在fibonacii数即可。

代码:

struct node{
int u,v,c;
}edge[100005]; bool cmp(node a,node b){
return a.c<b.c;
} int fa[100005];
int T,n,m; int findFa(int x){
return fa[x]==x?x:fa[x]=findFa(fa[x]);
} int kruskal1(){
rep(i,1,n) fa[i]=i;
int res=0;
rep(i,1,m){
int fx=findFa(edge[i].u);
int fy=findFa(edge[i].v);
if(fx!=fy){
fa[fx]=fy;
res+=edge[i].c;
}
}
int tx=findFa(1);
rep(i,2,n) if(findFa(i)!=tx) return -1;
return res;
}
int kruskal2(){
rep(i,1,n) fa[i]=i;
int res=0;
rep2(i,m,1){
int fx=findFa(edge[i].u);
int fy=findFa(edge[i].v);
if(fx!=fy){
fa[fx]=fy;
res+=edge[i].c;
}
}
int tx=findFa(1);
rep(i,2,n) if(findFa(i)!=tx) return -1;
return res;
} bool isFibo[100005]; void FiboD(){
mem(isFibo,false);
int a=1,b=2; isFibo[1]=isFibo[2]=true;
for(;;){
int t=a+b;
a=b, b=t;
if(t>100000) break;
isFibo[t]=true;
}
} int main(){
//freopen("test.in","r",stdin);
cin>>T;
FiboD();
rep(t,1,T){
scanf("%d%d",&n,&m);
rep(i,1,m)
scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].c);
sort(edge+1,edge+1+m,cmp);
int mins=kruskal1();
int maxs=kruskal2(); printf("Case #%d: ",t);
if(mins==-1 || maxs==-1) puts("No");
else{
bool flag=false;
rep(i,mins,maxs) if(isFibo[i]){
flag=true;
break;
}
if(flag) puts("Yes"); else puts("No");
}
}
//fclose(stdin);
}

最新文章

  1. iOS 下拉刷新-上拉加载原理
  2. OWIN 中 K Commands 与 OwinHost.exe 相等吗?
  3. MySQL-多条件拼接语句
  4. 用JS修改checkbox的选中状态
  5. Android ListView onItemClick Not Work
  6. Redis中的发布与订阅
  7. An Oblivious Watermarking for 3-D Polygonal Meshes Using Distribution of Vertex Norms
  8. WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞
  9. HDU1251 统计难题(Trie)
  10. Windows Server 2003 SP2企业版ISO下载, windows2003系统下载,2003系统下载,2003系统
  11. Convert Sorted List to Binary Search Tree java
  12. nefu 753 n!末尾有多少个0
  13. JDK 1.8判断集合种的元素是否存在相同
  14. Direct3D 11 Tutorial 5: 3D Transformation_Direct3D 11 教程5:3D转型
  15. 洗礼灵魂,修炼python(56)--爬虫篇—知识补充—编码之url编码
  16. SharePoint 2010:搜索服务当前处于脱机状态
  17. android程序监听home键与电源键
  18. C# FTP删除文件以及文件夹
  19. 整合swagger2生成Restful Api接口文档
  20. VS2010程序崩溃- APPCRASH

热门文章

  1. IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈项目有来商城云环境的部署方式
  2. 使用metaweblog API实现通用博客发布 之 版本控制
  3. php保留2位小数方法
  4. jdbc 数据库连接 长时间空闲 断开连接 ApplicationContext.xml
  5. english note(6.3 to 6.8)
  6. ASP.NET Core 中间件的使用(三):全局异常处理机制
  7. Social Networ
  8. Go语言核心36讲(导读)--学习笔记
  9. H5移动端适配方案-rem
  10. SpringBoot-使用异步