zoukankan      html  css  js  c++  java
  • pku 2425 A Chess Game (SG)

    题意:

    给一个由N个点组成的一张有向图,不存在环。点的编号是0~N-1。

    然后给出M个棋子所在的位置(点的编号)【一个点上可同时有多个棋子】。

    每人每次可移动M个棋子中的一个棋子一步,移动方向是有向边指向的方向。最后无法移动棋子的人输。

    思路:

    一眼就可看出的裸的SG,直接看代码吧。

    代码:

    int sg[1005];
    vector<int> graph[1005];
    
    int dfs(int x){ // position x
        if(sg[x]!=-1)
            return sg[x];
        int L=graph[x].size();
        if(L==0)
            return sg[x]=0;
        bool vis[1005] = {0};
        rep(i,0,L-1){
            vis[dfs(graph[x][i])] = true;
        }
        for(int i=0;;++i){
            if(!vis[i])
                return sg[x]=i;
        }
    }
    
    int n,Xi,a,m,pos;
    int main(){
        while(scanf("%d",&n)!=EOF){
            rep(i,0,n-1) graph[i].clear();
            rep(i,0,n-1){
                scanf("%d",&Xi);
                while(Xi--){
                    scanf("%d",&a);
                    graph[i].push_back(a);
                }
            }
            mem(sg,-1);
    
            while(scanf("%d",&m),m){
                int ans=0;
                rep(i,1,m){
                    scanf("%d",&pos);
                    ans=ans^dfs(pos);
                }
                if(!ans)
                    puts("LOSE");
                else
                    puts("WIN");
            }
        }
    }
  • 相关阅读:
    刻舟求剑,
    录制时间是不准确的,
    HIV T2
    DNA RNA
    洛谷 P1428 小鱼比可爱
    Codevs 1081 线段树练习2
    Codevs 1080 线段树联系
    Tarjan算法
    Codevs 2611 观光旅游
    洛谷 1865 A%B问题
  • 原文地址:https://www.cnblogs.com/fish7/p/4004794.html
Copyright © 2011-2022 走看看