天天看點

HDU 4786 Fibonacci Tree Fibonacci Tree

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 975    Accepted Submission(s): 289

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 <= 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).

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

Sample Output

Source

給你一個圖,每條邊有兩種顔色黑色或者白色,讓你判斷存不存在一棵生成樹,使得白邊的數量為斐波那契數。

分别求出白邊在生成樹中的最大值和最小值,用生成樹思想來做。當然如果圖不是連通圖的話,則肯定輸出No。然後判斷在這個最大最小之間存不存斐波那契數,如果存在則Yes,否則No。因為在這個區間内總能找到一條白邊可以用黑邊來代替。