本文共 1052 字,大约阅读时间需要 3 分钟。
简单博弈 注意题意的理解
代码:
#include #include #include #include #include #include #include #include #include #include using namespace std;//#pragma comment(linker,"/STACK:1000000000,1000000000")#define LL long longconst int INF=0x3f3f3f3f;const int N=1005;int win[N];int L[N];int head[N];struct node{ int j,next;}side[N];int I;void Add(int i,int j){ side[I].j=j; side[I].next=head[i]; head[i]=I++;}int dfs(int x,int w){ if(L[x]!=-2) return L[x]; int k=(w==1)?-1:1; for(int t=head[x];t!=-1;t=side[t].next) { int l=side[t].j; if(w==1) k=max(k,dfs(l,-w)); else k=min(k,dfs(l,-w)); } return k;}int main(){ //freopen("data.txt","r",stdin); int n; while(scanf("%d",&n)!=EOF) { I=0; memset(head,-1,sizeof(head)); for(int i=1;i<=n;++i) {L[i]=-2;win[i]=-2;} for(int i=2;i<=n;++i) { char c; int f,k; cin>>c>>f;//cout< <<" "< < >k; L[i]=k; } } int tmp=dfs(1,1); if(tmp==1) cout<<"+1"<
转载于:https://www.cnblogs.com/liulangye/archive/2012/10/18/2730026.html