All pastes #58638 Raw Edit

relacje

public c v1 · immutable
#58638 ·published 2006-05-24 14:24 UTC
rendered paste body
#include <stdio.h>#include <string.h>#define in 1000#define out 1001int 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);}