HDU 4786 Fibonacci Tree(生成樹,YY亂搞)
Fibonacci Tree
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1733 Accepted Submission(s): 543
Problem Description Coach Pang is interested in Fibonacci numbers while Uncle Yang wants him to do some research on Spanning Tree. So Coach Pang decides to solve the following problem:
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, ... )
Input The first line of the input contains an integer T, the number of test cases.
For each test case, the first line contains two integers N(1 <= N <= 10
5) and M(0 <= M <= 10
5).
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).
Output For each test case, output a line “Case #x: s”. x is the case number and s is either “Yes” or “No” (without quotes) representing the answer to the problem.
Sample Input
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
Sample Output
Case #1: Yes
Case #2: No
Source 2013 Asia Chengdu Regional Contest
題意: 給出一個無向圖,每條邊都已染色(黑/白),問是否存在生成樹,該生成樹的白色邊的數量是正的fibonacci數。 分析: 所給數據中黑邊為0,白邊為1,那麼生成樹的白邊數量即為生成樹的權和。 然後YY了一個做法:求其最小和最大生成樹,如果在這個范圍內存在fibonacci數則存在。 靠譜的證明方法一直沒想出來,這裡隨便解釋下: 對於任意一顆非最大生成樹,一定可以取一條白邊換一條黑邊使其仍然是一顆樹。
/*
*
* Author : fcbruce
*
* Time : Mon 06 Oct 2014 01:06:30 PM CST
*
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include