#include <stdio.h>
int *reallocate( int *buf, int size, int nsize )
{
int *tmp = new int [ nsize ];
memcpy( buf, tmp, size * sizeof( int ) );
delete []buf;
return tmp;
}
int main( int argc, char *argv[] )
{
int mbuf = 16, ibuf = 0, a, b;
int **buf = new int * [ mbuf ];
while( scanf( "%d-%d", &a, &b ) == 2 )
{
for( int i = 0;; i++ )
{
if( i == a.i )
{
buf[ ibuf ] = new int [ 16 ];
buf[ ibuf ][ 0 ] = 16;
buf[ ibuf ][ 1 ] = 3;
buf[ ibuf ][ 2 ] = a;
buf[ ibuf ][ 3 ] = b;
if( ++ibuf >= mbuf )
{
buf = ( int ** )reallocate( ( int * )buf, mbuf, mbuf + 16 );
mbuf += 16;
}
printf( "%d-%d\r\n", a, b );
break;
}
bool ain = false, bin = false;
for( int j = 2; j < buf[ ibuf ][ buf[ ibuf ][ 1 ] ]; j++ )
{
ain |= a == buf[ ibuf ][ j ];
bin |= b == buf[ ibuf ][ j ];
}
if( ain && bin )
break;
if( !ain && !bin )
continue;
printf( "%d-%d\r\n", a, b );
if( ain ) buf[ ibuf ][ buf[ ibuf ][ 1 ]++ ] = b;
if( bin ) buf[ ibuf ][ buf[ ibuf ][ 1 ]++ ] = a;
if( buf[ ibuf ][ 1 ] >= buf[ ibuf ][ 0 ] )
{
buf[ ibuf ] = reallocate( buf[ ibuf ], buf[ ibuf ][ 1 ], buf[ ibuf ][ 1 ] + 16 );
buf[ ibuf ][ 1 ] += 16;
}
}
}
delete buf;
} |