886. Possible Bipartition | Help Needed

Can anyone help me?
I am doing the cycle detection using disjoint set but only 47/70 test cases passed.
Whats wrong in this solution?

class Solution {
    public boolean possibleBipartition(int n, int[][] dislikes) {
        int parent[] = new int[n+1];
        int rank[] = new int[n+1];
        makeset(parent, rank, n);
        
        for(int[] edge : dislikes) {
            int u = find(edge[0], parent);
            int v = find(edge[1], parent);
            
            if(u == v) {
                return false;
            }
            
            union(u, v, parent, rank);
        }
        
        return true;
    }
    
    private void makeset(int[] parent, int[] rank, int n) {
        for(int i=0 ; i<=n ; i++){
            parent[i] = i;
            rank[i] = 0;
        }
    }
    
    private int find(int node, int[] parent) {
        if(node == parent[node]) {
            return node;
        }
        
        return parent[node] = find(parent[node], parent);
    }
    
    private void union(int u, int v, int[] parent, int[] rank) {
        u = find(u, parent);
        v = find(v, parent);
        
        if(rank[u] < rank[v]) {
            parent[u] = v;
        }
        else if(rank[v] < rank[u]) {
            parent[v] = u;
        }
        else {
            parent[v] = u;
            rank[u]++;
        }
    }
}
Comments (0)