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