#include <stdio.h> #include <stdlib.h>
#define MAX 26
int relation[5][2] = { {1,2},//{"aaa","bbb"}
{1,3},//{"aaa","ccc"}
{2,4}, {5,6}, {4,8} }; int find_root(int A[], int x) { if(A[x]<0) return x; else return find_root(A, A[x]); }
void set_union(int A[], int num1, int num2) { if(A[num1]<A[num2]) A[num2] = num1; else if(A[num1]>A[num2]) A[num1] = num2; else { A[num1]--; A[num2] = num1; } }
int main(int argc, char *argv[]) { int i; int root1; int root2; int j = 0; int root[2]; int A[MAX]; char str1[MAX]; char str2[MAX];
for(i=0;i<26;i++) A[i] = -1; for(i=0;i<6;i++) { root1 = find_root(A, relation[i][0]); root2 = find_root(A, relation[i][1]); set_union(A,root1, root2); }
for(i=0;i<26;i++) { if(A[i]<-1) { printf("%c%c%c\t",i+'a'-1,i+'a'-1,i+'a'-1); for(j=0;j<26;j++) { if(A[j]==i) printf("%c%c%c\t",j+'a'-1,j+'a'-1,j+'a'-1); } printf("\n"); } } system("PAUSE"); return 0; }
|