uva 12033 - Game of CS(树形删边)

题目链接:uva 12033 - Game of
CS

题目大意:给定图,以0为根节点,每条边有一个长度,两个人轮流操作,每次为一条边上色,上一个单位长度,当一条边的颜色被涂满,则算作是减掉整段子树。判断先手是否必胜。

解题思路:SG定理,对于当前节点u,每次考虑字节点v,u-v边的长度为l

当l为1时:sg(u) ^= (sg(v) + 1)

当l为奇数时: 需要判断sg(v)奇偶性,奇数-1,偶数+1;

当l为偶数时:sg(u) ^= sg(v)

#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;
const int maxn = 1005;

int N, W[maxn][maxn];
vector<int> g[maxn];

int dfs (int u, int p) {
    int ret = 0;

    for (int i = 0; i < g[u].size(); i++) {
        int& v = g[u][i];
        if (v != p) {
            int sg = dfs(v, u);
            if (W[u][v] == 1)
                ret ^= (sg+1);
            else if (W[u][v]&1)
                ret ^= (sg + (sg&1 ? -1 : 1));
            else
                ret ^= sg;
        }
    }

    return ret;
}

int main () {
    int cas, u, v, w;
    scanf("%d", &cas);
    for (int k = 1; k <= cas; k++) {
        scanf("%d", &N);

        for (int i = 0; i < N; i++)
            g[i].clear();

        for (int i = 1; i < N; i++) {
            scanf("%d%d%d", &u, &v, &w);
            g[u].push_back(v);
            g[v].push_back(u);
            W[u][v] = W[v][u] = w;
        }

        printf("Case %d: %s\n", k, dfs(0, -1) ? "Emily" : "Jolly");
    }
    return 0;
}

uva 12033 - Game of CS(树形删边),布布扣,bubuko.com

时间: 2024-10-21 03:54:50

uva 12033 - Game of CS(树形删边)的相关文章

Uva 10765 点双连通求删任意点后剩下图中的连通分量数

题目挂在wustoj上,不知道什么原因不能粘贴链接.. 第一题题号为1314..这题是智力题...换成7的阶乘就可以了.. 代码如下. #include<cstdio> int main() { printf("...............................................................................................\n"); printf("..#................

uva 10859 Placing Lampposts,树形dp

// uva 10859 Placing Lampposts // 树形dp // // 题目的意思是一个无向无环图中,有一些顶点和一些边 // 要在顶点上放置灯笼(灯笼可以照亮与它相邻接的点), // 使得所有的边都能被灯笼照亮,其中可能有一些边被两个灯笼 // 照亮,则要求使得所有边都被灯笼照亮所需灯笼的最小值, // 并且,此时边同时被两个灯笼照亮的数目应尽可能的多 // // 思路是 // d[i][0]表示在节点i不放置灯笼所需的灯笼的最小值 // d[i][1]表示在节点i放置灯笼所

UVA 12186 Another Crisis(树形DP)

A couple of years ago, a new world wide crisis started, leaving many people with economical problems. Some workers of a particular company are trying to ask for an increase in their salaries. The company has a strict hierarchy, in which each employee

【POJ3710】Christmas Game 博弈 有限制的图上删边游戏(树形删边游戏进化1)

转载请注明出处:http://blog.csdn.net/vmurder/article/details/42671885 其实我就是觉得原创的访问量比未授权盗版多有点不爽233... 题意: 一个树图,然后1永远是根,两人轮流删边,不能删者输. 删边限制:只能删跟1连通的边. 树图限制: 它首先是一棵树,然后某些点上可能带一个环 原描述:最开始的图是一颗带有一些简单环的树,然后任何边都至多在一个多边形上.每个多边形最多有一个节点出现在主树上. 给个神犇论文地址: 石家庄二中·贾志豪-- <组合

UVA 1220 Party at Hali-Bula (树形DP)

求一棵数的最大独立集结点个数并判断方案是否唯一. dp[i][j]表示以i为根的子树的最大独立集,j的取值为选和不选. 决策: 当选择i时,就不能选择它的子结点. 当不选i时,它的子结点可选可不选. 判断唯一性:当选择的某个子节点方案不唯一,父节点的方案就不唯一,或者某个子节点选或不选方案数一样. 转移顺序:按照拓扑序转移或dfs都可以. #include<bits/stdc++.h> using namespace std; const int maxn = 201; const int p

HDU 1619 &amp; UVA 116 Unidirectional TSP(树形dp,入门 , 数塔变形)

Unidirectional TSP Description Background Problems that require minimum paths through some domain appear in many different areas of computer science. For example, one of the constraints in VLSI routing problems is minimizing wire length. The Travelin

UVA 10859 Placing Lampposts(树形DP)

题意: 给定一张有向无环图,每个节点视作一个路口,每条边视作路,要求挑选一些节点放置路灯,使每条路都能被路灯照到,且使用的路灯数最少,如若存在使用相同路灯数的情况,则使得能被两盏路灯照到的路的数量尽量多. 解题: 可以将此问题提炼一下,就是使用最少的路灯照亮所有的路,使得被两盏路灯照亮的路尽量多,也就是使被一盏路灯照亮的路尽量少.那么问题可以转换为,使用最少x盏路灯,使得最少为y条路被一盏路灯照亮.那么问题就抽象为,W=k*x+y(其中k>y)使得W尽量小.因为,k>y,也就保障了x为首要条件

不用asp.net MVC,用WebForm照样可以实现MVC

在<避开WebForm天坑,拥抱ASP.Net MVC吧>这篇博客中我讲到了ASP.net WebForm由于一些先天的“诱导犯罪”的缺陷,现在用ASP.net MVC的公司越来越多.但是根据填写了"ASP.net MVC的免费网络公开课"调查表的统计,我们发现有一大半的人还没有使用过ASP.Net MVC,而没用过ASP.net MVC的人中竟然有很多人人是因为感觉ASP.Net 难.没时间学.调查表分析数据如下: 初看ASP.net确实难:复杂的路由机制. ViewDa

jQuery学习笔记(二)

jQuery的DOM操作  html操作 1 // html() 2 // 获取 -- 北京节点的HTML代码 3 console.log($("#bj").html()); 4 // 设置(重置内容,不是追加或累加) -- 天津节点设置区的内容 5 $("#tj").html("天津<ul><li>塘沽区</li></ul>"); 文本操作 -- text() 1 //text() 2 //获取