Alternating Diameter ALTDIA Solution Codechef
Chef stumbled upon B black nodes and W white nodes and now wants to construct a tree using them.
Chef is bamboozled by the total number of trees that can be constructed using these nodes. To reduce this count, Chef considered only those trees which have at least one diameter that has alternating colors i.e. a black node is followed by a white node and a white node is followed by a black node.
Help Chef in finding out the tree with the minimum possible diameter among all the trees that satisfies the above condition. If no tree satisfies the above conditions, print −1. If multiple trees satisfies the above condition, print any.
Input Format
The first line contains a single integer T – the number of test cases. Then the test cases follow.
The first and only line of each test case contains two space separated integers B,W representing the number of black and white nodes respectively.
Output Format
If a tree can be constructed that fulfils all the requirements then
In the first line, output a string of length B+W in which the ith character (1-based indexing) is either W or B denoting the colour of the ith node as black or white respectively.
In the following B+W−1 lines, output two integers U and V denoting an edge between Uth and Vth node.
If no tree fulfils the requirements print -1 in a single line.
Constraints
1≤T≤100
0≤B,W≤1000
1≤B+W≤1000
Sample Input 1
3
1 1
0 2
1 2
Sample Output 1
WB
2 1
-1
WBW
1 2
2 3
Explanation
- Test case 1: The tree has only one path between the nodes 1 and 2 which is the diameter and also alternating in color. The checker will handle multiple possible answers so you can also swap the colors of the node to achieve the same result.
- Test case 2: There is only one tree possible and its diameter would consist of all white nodes only. Therefore there is no tree which satisfies the given conditions.
SOLUTION
Program: Alternating Diameter ALTDIA Solution in Python
for _ in range(int(input())):
b, w = [int(x) for x in input().split()]
if b == 0 and w > 1:
print(-1)
continue
if w == 0 and b > 1:
print(-1)
continue
if False:
print('Tanmay')
if b > w:
for i in range(w):
print('W', end="")
for i in range(b):
print('B', end="")
else:
for i in range(b):
print('B', end="")
for i in range(w):
print('W', end="")
print()
for i in range(w + b - 1):
print(1, i + 2)
Related:
- The Magical Stone Solution Codechef
- Mystical Numbers XORGAND Solution Codechef
- Pushpa PUSH7PA Solution Codechef
- The Attack of Queen Solution Codechef
- Sugarcane Juice Business Solution Codechef
- In The Green Zone ITGRZN Solution Codechef
- Four Arrays FOURARR Solution Codechef
- Miami GP F1RULE Solution Codechef
- Football Cup FOOTCUP Solution Codechef