# Count the nodes whose weight is a perfect square

Given a tree, and the weights of all the nodes, the task is to count the number of nodes whose weight is a perfect Square.

**Examples:**

Input:

Output:3

Only the weights of nodes 1, 4 and 5 are perfect squares.

**Approach:** Perform dfs on the tree and for every node, check if it’s weight is a perfect square or not.

Below is the implementation of the above approach:

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `int` `ans = 0; ` ` ` `vector<` `int` `> graph[100]; ` `vector<` `int` `> weight(100); ` ` ` `// Function that returns true ` `// if n is a perfect square ` `bool` `isPerfectSquare(` `int` `n) ` `{ ` ` ` `double` `x = ` `sqrt` `(n); ` ` ` `if` `(` `floor` `(x) != ` `ceil` `(x)) ` ` ` `return` `false` `; ` ` ` `return` `true` `; ` `} ` ` ` `// Function to perform dfs ` `void` `dfs(` `int` `node, ` `int` `parent) ` `{ ` ` ` `// If weight of the current node ` ` ` `// is a perfect square ` ` ` `if` `(isPerfectSquare(weight[node])) ` ` ` `ans += 1; ` ` ` ` ` `for` `(` `int` `to : graph[node]) { ` ` ` `if` `(to == parent) ` ` ` `continue` `; ` ` ` `dfs(to, node); ` ` ` `} ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `x = 15; ` ` ` ` ` `// Weights of the node ` ` ` `weight[1] = 4; ` ` ` `weight[2] = 5; ` ` ` `weight[3] = 3; ` ` ` `weight[4] = 25; ` ` ` `weight[5] = 16; ` ` ` `weight[6] = 30; ` ` ` ` ` `// Edges of the tree ` ` ` `graph[1].push_back(2); ` ` ` `graph[2].push_back(3); ` ` ` `graph[2].push_back(4); ` ` ` `graph[1].push_back(5); ` ` ` `graph[5].push_back(6); ` ` ` ` ` `dfs(1, 1); ` ` ` ` ` `cout << ans; ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

3

## Recommended Posts:

- Count the nodes in the given tree whose weight is even
- Count the nodes in the given tree whose weight is prime
- Count the nodes in the given tree whose weight is a power of two
- Count the nodes in the given tree whose weight is even parity
- Count the nodes in the given tree whose sum of digits of weight is odd
- Count the nodes of the given tree whose weight has X as a factor
- Count number of paths whose weight is exactly X and has at-least one edge of weight M
- Largest factor of a given number which is a perfect square
- Largest perfect square number in an Array
- Largest Divisor of a Number not divisible by a perfect square
- Find sum of all nodes of the given perfect binary tree
- Queries to find the maximum Xor value between X and the nodes of a given level of a perfect binary tree
- Permutation of numbers such that sum of two consecutive numbers is a perfect square
- Count nodes within K-distance from all nodes in a set
- Count the nodes of the tree which make a pangram when concatenated with the sub-tree nodes

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.