rendered paste bodyint 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");
}