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ń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);}