All pastes #570442 Raw Edit

Stuff

public text v1 · immutable
·published 2007-06-16 18:21 UTC
rendered paste body
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");
        }