题意:一个家庭聚会,每个人都想送出礼物,送礼规则是, 一个人,先看名单列表,发现第一个祖先 就会送给他礼物,然后就不送了,如果他没找到礼物 他会伤心的离开聚会!告诉你m个祖先关系, 和每个人想给谁送!让你求出名单列表! 析:这个题,真是没想到啊,还是看的题解,首先要知道的是,如果自己和父结点送的人不一样,并且自己不是给自己的,那么就是无解,为什么呢?是这样的,假设自己和父结点送的人不一样,并且也不是给自己的, 那么一定是给自己的某个祖先,而父结点也是自己的某个祖先,那么不是同一个人,必定一个是另…
题意:给你一个森林,表示其祖先关系(自己也是自己的祖先),每个人有一个礼物(要送给这个人的固定的一个祖先) 让你构造一个序列,使得的对于每个人,这个序列中第一个出现的他的祖先,是他要送礼物的的那个祖先 分析:这个序列满足 1:我们这个序列只需要出现那些被送礼物的人就好了 2:这个序列的元素保证,如果x是y的祖先,那么x在y的后面 具体:这个序列可以通过dfs构造,然后最后check一下这个序列 注:check的过程和构造序列的dfs过程同步 #include <cstdio> #include…
$dfs$,后续遍历. 如果某个节点$a[i]=i$,那么$i$的后继的$a[i]$都要指向$i$,直到出现新的后继$j$,$a[j]=j$.利用这个可以判断是否有解. 如果有解的话,那么只要输出后序遍历的结果就可以了. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include&…
Kuro is living in a country called Uberland, consisting of nn towns, numbered from 11to nn, and n−1n−1 bidirectional roads connecting these towns. It is possible to reach each town from any other. Each road connects two towns aa and bb. Kuro loves wa…
题目描述 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上共有V个格点,编号为0,1,2…,V-1,它们是连通的,也就是说棋子从任意格点出发,总能到达所有的格点.小Q在设计棋盘时,还保证棋子从一个格点移动到另外任一格点的路径是唯一的.小Q现在想知道,当棋子从格点0出发,移动N步最多能经过多少格点.格点可以重复经过多次,但不重复计数. 输入 第一行包含2个正整数V,N,其中V表示格点总数,N表示移动步数. 接下…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1232 题意: 给你一个无向图,n个点,m条边. 每条边有边权len[i][j],每个点有点权c[i]. 让你找一棵生成树,并在这棵树上找一个根. 从根开始dfs整棵树,每经过一条边(或一个点),花费加上对应的边权(点权). 问你最小的花费. 题解: 树上dfs性质: 花费 = ∑ (2*len[i][j] + c[i] + c[j]) + c[root] (1)每一条边要经过两次. (2…
牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册,支持下列 4 种操作: 插入新人名 si,声望为 a 给定名字前缀 pi 的所有人的声望值变化 di 查询名字为 sj 村民们的声望值的和(因为会有重名的) 查询名字前缀为 pj 的声望值的和 题解:一个非常明显的线段树操作,前缀可以看作是区间更新,区间查询,给定名字就是单点更新,单点查询,字典树上…
题目链接:http://codeforces.com/problemset/problem/682/C 题目大意:取树上任意一个点v,若点v的子树中有一个点u使得dist(v,u)>a[u]那么称节点v是伤心的.给你一个根为1的树,每个节点有一个权值a[i],每条边也有一个权值w,现在让你删最少的结点,使得树上不存在伤心的点.解题思路:删除最少的点,我们可以反一下,变成找最多的点,使得这些点不伤心.只要对这棵树进行DFS,同时记录路径长度dis,当到达某点u时,若dis>a[u],那么要将u及…
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Sasha lives in a big happy family. At the Man's Day all the men of the family gather to celebrate it following their own traditions. There are n…
大意: 给定森林, 要求构造一个表, 满足对于每个$x$, 表中第一次出现的$x$的祖先(包括$x$)是$a_x$. 刚开始还想着直接暴力分块优化一下连边, 最后按拓扑序输出... 实际上可以发现$a_x$要么等于$x$, 要么等于$fa_x$, 直接dfs一边就好了... #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <set…