EASY JAVA DFS Solution
Code


# Code
```java []
class Solution {
    int res=0;
    public int dfs(List<List<Integer>> adj,int node,int vis[],int k,int[] nums,int s){
        vis[node]=1;
        int sum=nums[node];
        for(int j:adj.get(node)){
            if(vis[j]==1) continue;
            sum+=dfs(adj,j,vis,k,nums,s);
        }
        if(sum==k && (s-sum)%k==0){
            res++;
            return 0;
        }
        return sum;
    }
    public int componentValue(int[] nums, int[][] edges) {
        List<List<Integer>> adj=new ArrayList<List<Integer>>();
        int n=nums.length;
        for(int i=0;i<n;i++) adj.add(new ArrayList<Integer>());
        for(int[] i:edges){
            adj.get(i[0]).add(i[1]);
            adj.get(i[1]).add(i[0]);
        }
        int sum=0;
        int min=Integer.MAX_VALUE,max=Integer.MIN_VALUE;
        for(int i:nums) {
            max=Math.max(max,i);
            min=Math.min(i,min);
            sum+=i;
        }
        int ans=-1;
        for(int i=max;i<=sum;i++){
            if(sum%i!=0) continue;
            res=0;
            int vis[]=new int[n];
            int x=dfs(adj,0,vis,i,nums,sum);
            if(x!=0) continue;
            ans=Math.max(ans,res);
        }
        return ans-1;
    }
}
```
['Tree', 'Java']