HDOJ 1524 SG函数标准模板题

来源:互联网 发布:淘宝买的味增汤怎么样 编辑:程序博客网 时间:2024/05/19 18:12

SG的模板题,不多说。

这里采用记忆化深搜优化。Time=15ms还不错。

#include<iostream>#include<algorithm>using namespace std;struct EDGE{    int v,next;}E[11111111];int ptr[1111],Enum;int sg[1111];void addEdge( int u,int v ){  E[Enum].v=v;  E[Enum].next=ptr[u];  ptr[u]=Enum++;}int SG( int sit ){ if( sg[sit]!=-1 ) return sg[sit]; int flag[1111]; memset( flag,0,sizeof(flag) ); for( int i=ptr[sit];i!=-1;i=E[i].next )  flag[SG(E[i].v)]=1;for( int i=0;i<1111;i++ ) if( flag[i]==0 )  return sg[sit]=i;}int main(){ int N; while( scanf("%d",&N)!=EOF ) {    Enum=0;    memset( ptr,-1,sizeof(ptr) );    for( int i=0;i<N;i++ )    {   int outp,v;   scanf( "%d",&outp );   for( int j=0;j<outp;j++ )   {    scanf( "%d",&v );    addEdge(i,v);  }   }   memset( sg,-1,sizeof(sg) );   int chessnum;   while( scanf("%d",&chessnum)!=EOF,chessnum )   {     int xo=0;int sit;     for( int i=0;i<chessnum;i++ )     {     scanf("%d",&sit);     xo^=SG(sit);     }        printf( "%s\n",xo?"WIN":"LOSE" );    }  }  return 0;}


原创粉丝点击