zoukankan      html  css  js  c++  java
  • 【POJ】【3710】Christmas Game

    博弈论

      贾志豪论文上的题目……题解请看论文

      Orz了一下Hzwer

     1 Source Code
     2 Problem: 3710        User: sdfzyhy
     3 Memory: 716K        Time: 0MS
     4 Language: G++        Result: Accepted
     5 
     6     Source Code
     7 
     8     //POJ 3710
     9     #include<cstdio>
    10     #include<cstring>
    11     #include<iostream>
    12     #define F(i,j,n) for(int i=j;i<=n;++i)
    13     int getint(){
    14         int v=0,sign=1; char ch=getchar();
    15         while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();}
    16         while(isdigit(ch))  {v=v*10+ch-'0'; ch=getchar();}
    17         return v*sign;
    18     }
    19     const int N=1010,INF=~0u>>2;
    20     const double eps=1e-8;
    21     /*******************template********************/
    22     int to[N],next[N],head[N],cnt,s[N],top;
    23     bool vis[N],ve[N],w[N];
    24     void add(int x,int y){
    25         to[++cnt]=y; next[cnt]=head[x]; head[x]=cnt;
    26         to[++cnt]=x; next[cnt]=head[y]; head[y]=cnt;
    27     }
    28     int dfs(int x){
    29         vis[x]=1;
    30         int ans=0;
    31         s[++top]=x;
    32         for(int i=head[x];i;i=next[i])
    33             if(!ve[i]){
    34                 ve[i]=ve[i^1]=1;
    35                 int temp;
    36                 if (!vis[to[i]]) temp=dfs(to[i])+1;
    37                 else{
    38                 int q=s[top--];
    39                 while(q!=to[i]){
    40                         w[q]=1;//环上节点标记 
    41                         q=s[top--];
    42                     }
    43                     ++top;
    44                     return 1;
    45                 }//缩环
    46                 if(w[to[i]]) ans^=temp%2;
    47                 else ans^=temp;
    48             }
    49         return ans;
    50     }
    51     void clear(){
    52         memset(head,0,sizeof head);
    53         memset(next,0,sizeof next);
    54         memset(vis,0,sizeof vis);
    55         memset(ve,0,sizeof ve);
    56         memset(w,0,sizeof w);
    57         top=0; cnt=1;
    58     }    
    59     int main(){
    60         int T,n,m,x,y;
    61         while(scanf("%d",&T)!=EOF){
    62             int ans=0;
    63             F(i,1,T){
    64                 clear();
    65                 n=getint(); m=getint();
    66                 F(i,1,m){
    67                     x=getint(); y=getint();
    68                     add(x,y);
    69                 }
    70                 ans^=dfs(1);
    71             }
    72             puts(ans ? "Sally" : "Harry");
    73         }
    74         return 0;
    75     }
    View Code
  • 相关阅读:
    详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
    IDEA链接数据库自动生成实体类
    urllib的高级用法
    django项目部署上线
    Git 远程仓库(Github)
    git 标签
    git分支管理
    Git 工作区、暂存区和版本库
    git介绍及安装
    Python3-笔记-numpy学习指南-002-基础
  • 原文地址:https://www.cnblogs.com/Tunix/p/4305890.html
Copyright © 2011-2022 走看看