http://poj.org/problem?id=1867
#include <stdio.h>
#include <vector>
#include <string.h>
using namespace std;
#define YES { printf( "samen" ); continue; }
#define NO { printf( "differentn" ); continue; }
#define PT(a) (printf("an"));
struct node
{
vector< node* > next;
char c;
}mem[500];
char w[1000];
int u;
node* new_node()
{
mem[u++].next.clear();
return &mem[u-1];
}
int creat( int a, node *p )
{
node *q;
p->c = w[a];
a++;
if( w[a] == '(' )
{
a++;
while( 1 )//w[a] != '' )
{
if( w[a] == ',' ) a++;
q = new_node();
p -> next.push_back( q );
q -> next.push_back( p );
a = creat( a, q );
if( w[a] == ')' )
{
a++;
return a;
}
}
}
return a;
}
bool judge( node *p1, node *f1, node *p2, node *f2 )
{
int d1 = p1->next.size(), d2 = p2->next.size(), i, j, k;
if( d1 != d2 || p1->c != p2->c ) return false;
for( i = 0; i < d1; i++ )
if( p1->next[i] == f1 ) break;
for( j = 0; j < d2; j++ )
if( p2->next[j] == f2 ) break;
for( k = 1; k < d1; k++ )
if( ! judge( p1->next[(i+k)%d1], p1, p2->next[(j+k)%d2], p2 ) )
return false;
return true;
}
int main()
{
bool key;
int cas, i, j, h;
scanf( "%d", &cas );
while( cas-- )
{
u=0;
scanf( "%s", w );
mem[u].next.clear();
u++;
creat( 0, &mem[u-1] );
h = u;
scanf( "%s", w );
mem[u].next.clear();
u++;
creat( 0, &mem[u-1] );
if( u == 2 )
{
if( mem[0].c == mem[1].c ) YES
else NO
}
if( h*2 != u )
NO
for( i=0; i < h; i++ )
if( mem[i].next.size() == 1 )
break;
if( i < h )
{
for( key=1, j=h; j < u && key ; j++ )
if( mem[j].next.size() == 1 && mem[j].c == mem[i].c )
{
if( judge( mem[i].next[0], &mem[i], mem[j].next[0], &mem[j] ) )
{
key = 0;
}
}
if( !key ) YES
}
NO
}
return 0;
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
