HDU 4786 Fibonacci Tree(生成树,YY乱搞)
http://acm.hdu.edu.cn/showproblem.php?
pid=4786
Fibonacci Tree
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1733 Accepted Submission(s): 543
Consider a bidirectional graph G with N vertices and M edges. All edges are painted into either white or black. Can we find a Spanning Tree with some positive Fibonacci number of white edges?
(Fibonacci number is defined as 1, 2, 3, 5, 8, ... )
For each test case, the first line contains two integers N(1 <= N <= 105) and M(0 <= M <= 105).
Then M lines follow, each contains three integers u, v (1 <= u,v <= N, u<> v) and c (0 <= c <= 1), indicating an edge between u and v with a color c (1 for white and 0 for black).
2
4 4
1 2 1
2 3 1
3 4 1
1 4 0
5 6
1 2 1
1 3 1
1 4 1
1 5 1
3 5 1
4 2 1
Case #1: Yes
Case #2: No
/*
*
* Author : fcbruce
*
* Time : Mon 06 Oct 2014 01:06:30 PM CST
*
*/
#include <cstdio>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <algorithm>
#include <ctime>
#include <cctype>
#include <cmath>
#include <string>
#include <cstring>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <set>
#define sqr(x) ((x)*(x))
#define LL long long
#define itn int
#define INF 0x3f3f3f3f
#define PI 3.1415926535897932384626
#define eps 1e-10 #ifdef _WIN32
#define lld "%I64d"
#else
#define lld "%lld"
#endif #define maxm 100007
#define maxn 100007 using namespace std; int fib[maxn];
struct _edge
{
int u,v,w;
bool operator < (const _edge &_)const
{
return w<_.w;
}
}edge[maxm]; int pre[maxn]; int root(int x)
{
if (x==pre[x]) return x;
return pre[x]=root(pre[x]);
} bool same(int x,int y)
{
return root(x)==root(y);
} void _merge(itn x,int y)
{
pre[root(x)]=root(y);
} int cnt,fib_cnt; int main()
{
#ifdef FCBRUCE
freopen("/home/fcbruce/code/t","r",stdin);
#endif // FCBRUCE int T_T,__=0;
scanf("%d\n",&T_T); fib[0]=1;
fib[1]=1;
fib_cnt=2;
for (int i=2;;i++)
{
fib[i]=fib[i-1]+fib[i-2];
fib_cnt++;
if (fib[i]>100000) break;
} while (T_T--)
{
printf("Case #%d: ",++__);
int n,m;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) pre[i]=i;
cnt=n;
for (int i=0,u,v,w;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if (!same(u,v)) {_merge(u,v);cnt--;}
edge[i]=(_edge){u,v,w};
} if (cnt!=1)
{
printf("No\n");
continue;
} sort(edge,edge+m); for (int i=1;i<=n;i++) pre[i]=i;
int MIN=0;
cnt=n;
for (int i=0,u,v,w;i<m;i++)
{
u=edge[i].u;v=edge[i].v;w=edge[i].w;
if (!same(u,v))
{
_merge(u,v);
MIN+=w;
cnt--;
if (cnt==1) break;
}
} for (int i=1;i<=n;i++) pre[i]=i;
int MAX=0;
cnt=n;
for (int i=m-1,u,v,w;i>=0;i--)
{
u=edge[i].u;v=edge[i].v;w=edge[i].w;
if (!same(u,v))
{
_merge(u,v);
MAX+=w;
cnt--;
if (cnt==1) break;
}
} int idmin=lower_bound(fib,fib+fib_cnt,MIN)-fib;
int idmax=lower_bound(fib,fib+fib_cnt,MAX)-fib; if (fib[idmin]!=MIN && fib[idmax]!=MAX && idmin==idmax)
puts("No");
else
puts("Yes"); } return 0;
}
HDU 4786 Fibonacci Tree(生成树,YY乱搞)的更多相关文章
- HDU 4786 Fibonacci Tree 生成树
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4786 题意:有N个节点(1 <= N <= 10^5),M条边(0 <= M <= ...
- hdu 4786 Fibonacci Tree (2013ACMICPC 成都站 F)
http://acm.hdu.edu.cn/showproblem.php?pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) ...
- 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) P ...
- HDU 4786 Fibonacci Tree (2013成都1006题)
Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 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 乱搞 智商题目 最小生成树
首先计算图的联通情况,如果图本身不联通一定不会出现生成树,输出"NO",之后清空,加白边,看最多能加多少条,清空,加黑边,看能加多少条,即可得白边的最大值与最小值,之后判断Fibo ...
- hdu 4786 Fibonacci Tree (最小、最大生成树)
题意: N个点,M条边.每条边连接两个点u,v,且有一个权值c,c非零即一. 问能否将N个点形成一个生成树,并且这棵树的边权值和是一个fibonacii数. (fibonacii数=1,2,3,5,8 ...
- 【HDU 4786 Fibonacci Tree】最小生成树
一个由n个顶点m条边(可能有重边)构成的无向图(可能不连通),每条边的权值不是0就是1. 给出n.m和每条边的权值,问是否存在生成树,其边权值和为fibonacci数集合{1,2,3,5,8...}中 ...
随机推荐
- Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法
1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 : bindServ ...
- 自己写的画loss曲线代码
import matplotlib.pyplot as plt iteration = [] loss = [] with open('/home/sensetime/log.txt','r') as ...
- C#中byte类型运算
首先看下面一段代码 byte x = 1; byte y = 2; byte z = x + y; Console.WriteLine(z); 可能很多人会说显示结果是3. 其实,这段代码无法运行,因 ...
- ios 封装sqllite3接口
2013-03-25 17:41 261人阅读 评论(0) 收藏 举报 // #import <Foundation/Foundation.h> #import "sqlite3 ...
- 牛客网NOIP赛前集训营-提高组(第二场)A 方差
链接:https://www.nowcoder.com/acm/contest/173/A来源:牛客网 题目描述 一个长度为 m 的序列 b[1...m] ,我们定义它的方差为 ,其中 表示序列的平 ...
- UVa-1586-分子量
这是一道字符串的题目,我们直接对字符串进行解析,然后计算就可以了. 我是直接开了两个数组存入对应的值,没有进行判断,我们如果在if判断里面直接增加了i的值,最好先把对应的字符存起来,然后这样才不容易出 ...
- DBLINK引起的SQL性能问题
最近发现报表系统上有一存储过程越来越慢,在数据库中查询后,发现有以下条SQL --优化前:耗时>1h select c.policyno, c.endorseno, r.item_code, s ...
- nginx+tomcat实现简单的负载均衡
host1:10.0.0.10(部署nginx和tomcat) host2:10.0.0.11(部署tomcat) 平台环境(2主机一样) [root@smp ~]# uname -r3.10.0-8 ...
- 环境变量HISTCONTROL命令及对快捷键Ctrl+o命令的影响
在linux中环境变量HISTCONTROL可以控制历史的记录方式. HISTCONTROL有以下的选项: ignoredups 默认,忽略重复命令 ignorespace ...
- 树莓派 - 蓝牙 (1) 试试Beacon
首先先了解一下bluez, 以及常用的tools. - hcitool.bluetoothctl等工具,可以进行BLE设备的扫描.连接.配对.广播等操作: - hcitool可以发送HCI comma ...