int main() { /*#ifndef ONLINE_JUDGE freopen("i.txt","r",stdin); freopen("o.txt","w",stdout); #endif ONLINE_JUDGE */ char opcja,IP[50]; while(opcja = getc(stdin)) { if(opcja == EOF) break; else if(opcja == 'B') { getchar(); gets(IP); zamien_ip(IP); switch(sprawdz_ip()) { case 1: { //adresow nie ma w bazie //pierwszy wezel staje sie rodzicem: wezel *nowy1; nowy1 = (wezel*)malloc(sizeof(wezel)); nowy1 -> rodzic = NULL; HASH[ip1] = nowy1; //drugi wezel jest jego pierwszym dzieckiem: wezel *nowy2; nowy2 = (wezel*)malloc(sizeof(wezel)); nowy2 -> rodzic = nowy1; HASH[ip2] = nowy2; } break; case 2: {//jest pierwszy adres, nie ma drugiego //szukam rodzica wierzcholka, ktory jest juz w bazie //i dolaczam do niego drugi adres IP. wezel *wierzcholek; wierzcholek = HASH[ip1]; while(wierzcholek -> rodzic != NULL) wierzcholek = wierzcholek -> rodzic; wezel *nowy; nowy = (wezel*)malloc(sizeof(wezel)); nowy -> rodzic = wierzcholek; HASH[ip2] = nowy; } break; case 3: {//jest drugi adres nie ma pierwszego //szukam rodzica wierzcholka, ktory jest juz w bazie //i dolaczam do niego drugi adres IP. wezel *wierzcholek; wierzcholek = HASH[ip2]; while(wierzcholek -> rodzic != NULL) wierzcholek = wierzcholek -> rodzic; wezel *nowy; nowy = (wezel*)malloc(sizeof(wezel)); nowy -> rodzic = wierzcholek; HASH[ip1] = nowy; } break; case 4: {//oba adresy w bazie, laczenie grup. //znajduje rodzicow obu elementow //laczy rodzica 2 z 1 wezel *szukany_rodzic1; szukany_rodzic1 = HASH[ip1]; while(szukany_rodzic1 -> rodzic != NULL) szukany_rodzic1 = szukany_rodzic1 -> rodzic; wezel *szukany_rodzic2; szukany_rodzic2 = HASH[ip2]; while(szukany_rodzic2 -> rodzic != NULL) szukany_rodzic2 = szukany_rodzic2 -> rodzic; szukany_rodzic2 -> rodzic = szukany_rodzic1; } break; } } else if(opcja == 'T') { getc(stdin); gets(IP); zamien_ip(IP); if(sprawdz_ip() == 4) { wezel *szukany_rodzic1; szukany_rodzic1 = HASH[ip1]; while(szukany_rodzic1 -> rodzic != NULL) szukany_rodzic1 = szukany_rodzic1 -> rodzic; wezel *szukany_rodzic2; szukany_rodzic2 = HASH[ip2]; while(szukany_rodzic2 -> rodzic != NULL) szukany_rodzic2 = szukany_rodzic2 -> rodzic; if(szukany_rodzic1 == szukany_rodzic2) printf("T\n"); else printf("N\n"); } else printf("N\n"); }