Непересекающееся множество — это структуры данных, используемые в минимальном связующем дереве Крускала.
Эти структуры данных позволяют нам создавать объединение двух или более узлов.
Это позволяет нам определить, принадлежат ли два узла одному и тому же компоненту графа not.
Временная сложность равна O(4alpha) (если мы используем сжатие пути, иначе оно будет логарифмическим), что является доказанной постоянной временной сложностью.
Для получения дополнительной информации см.
class Main{ int parent[] = new int[100000]; int rank[] = new int[100000]; void makeSet(){ for(int i=1;i6->4->3 , here 3 is the parent of this union, so in order to get the parent of 7 which is 3 we can path compress it. like 7->3,6->3,4->3 etc. } void union(int u, int v){ u = findParent(u); v = findParent(v); if(rank[u] rank[v]) parent[v] = u; else parent[u] =v; // or parent[v] = u; // here u and v had the same rank //and now v became parent of u hence its rank will increase rank[v] ; } public static void main(String args[]) throws Exception{ Main m = new Main(); //if we where given no of nodes as n BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); while(n>0){ int u = n--; int v = n--; m.union(u,v);// this will create union of n nodes } // if 2 and 3 belong to the same component or not find out if(findParent(2)! = findParent(3)) System.out.println("Different component"); else System.out.println("Same component"); } }
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3