#include #define DO3 16581375 #define DO2 65025 #define DO1 255 #define MOD 2000001 unsigned long hash(unsigned long a); unsigned long FIND_SET(unsigned long set); unsigned long MAKE_SET(unsigned long IP1, unsigned long IP2); struct wierzcholek { unsigned long SET; unsigned long rank; } ELEMENT[MOD]; int main() { unsigned long ip1_1, ip1_2, ip1_3, ip1_4; unsigned long ip2_1, ip2_2, ip2_3, ip2_4; unsigned long IP1, IP2, key1, key2; unsigned long i; char znak; for(i=0; i ELEMENT[set2].rank) { ELEMENT[set1].rank+=ELEMENT[set2].rank; ELEMENT[set2].rank=ELEMENT[set1].rank; if(set2!=MOD+1) ELEMENT[set2].SET=set1; else ELEMENT[IP2].SET=set1; } else if(ELEMENT[set1].rank < ELEMENT[set2].rank) { ELEMENT[set2].rank+=ELEMENT[set1].rank; ELEMENT[set1].rank=ELEMENT[set2].rank; ELEMENT[set1].SET=set2; ELEMENT[IP1].SET=set2; ELEMENT[IP2].SET=set2; } }