All pastes #58637 Raw Edit

swiatlowody

public text v1 · immutable
#58637 ·published 2006-05-24 14:23 UTC
rendered paste body
#include <stdio.h>
#include <string.h>

#define in 1000
#define out 1001

int dodaj(int a, int b);
int tablica[1000][1002], liczby[1000];
int wys=1;

int main()
{
    int a, b, i;
    char znak;

    memset(liczby, -1, sizeof(int)*1000);

    while(scanf("%c", &znak)!=EOF)
    {
        switch(znak)
        {
            case '(':
            {
                scanf("%d,%d)", &a, &b);
                /*printf("(%d,%d) ", a, b);*/
                if(a!=b) dodaj(a,b);
                /*printf("out %d in %d ", tablica[a][out], tablica[b][in]);*/
            } break;

            case '\n':
            {
                wysokosc();
                printf("%d ", wys);
                wys=1;
            } break;

            default: break;
        }
    }
    /*wys=1;
    wysokosc();
    printf("%d\n", wys);*/
    return 0;
}

int dodaj(int a, int b)
{
    tablica[a][b]=1;
    tablica[a][out]++;
    tablica[b][in]++;

}

int wysokosc()
{
    int i,j,k,l,tab,jeden;
    do
    {
        jeden=0;
        for(i=0, tab=0; i<1000; i++)
        {
            if(tablica[i][out]==0 && tablica[i][in]>0)
            {
                liczby[tab]=i;
                tab++;
                jeden=1;
            }
        }
        if(liczby[0]!=-1) wys++;
        for(i=0; liczby[i]!=-1; i++)
        {
         /*ko&#324;cowy wierzcholek*/
            l=liczby[i];
            j=tablica[l][in];
            tablica[l][in]=0;

                for(k=0; j>0 && k<1000; k++) /*kolumna koncowego wierzcholka*/
                {
                    if(tablica[k][l]==1)
                    {
                        tablica[k][l]=0;
                        tablica[k][out]--;
                        j--;
                    }
                }
        }

        memset(liczby, -1, sizeof(int)*tab);
    } while(jeden);
}