题目链接

AtCoder:https://arc063.contest.atcoder.jp/tasks/arc063_c

洛谷:https://www.luogu.org/problemnew/show/AT2148

Solution

注意到每次只能加一或减一,也就是奇偶性一定会变,那么我们可以黑白染色一波判无解。

对于权值我们直接对每个点记\(l[i],r[i]\)表示当前点可以取到的范围。

那么我们\(\rm dfs\)一边在回溯和下传的时候都更新下判无解就好了。

如果有解直接在范围内随便设值就好了。

#include<bits/stdc++.h>
using namespace std; void read(int &x) {
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
} void print(int x) {
if(x<0) putchar('-'),x=-x;
if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');} #define lf double
#define ll long long
#define end puts("No"),exit(0) const int maxn = 1e5+10;
const int inf = 1e9;
const lf eps = 1e-8; int l[maxn],r[maxn],head[maxn],tot,vis[maxn],n,m,col[maxn],rt,val[maxn];
struct edge{int to,nxt;}e[maxn<<1]; void add(int u,int v) {e[++tot]=(edge){v,head[u]},head[u]=tot;}
void ins(int u,int v) {add(u,v),add(v,u);} void dfs(int x,int fa,int c) {
if(vis[x]&&c!=col[x]) end;
if(vis[x]&&fa&&(l[x]<l[fa]-1||r[x]>r[fa]+1)) end;
if(!vis[x]) l[x]=l[fa]-1,r[x]=r[fa]+1,col[x]=c;
for(int v,i=head[x];i;i=e[i].nxt)
if((v=e[i].to)!=fa) {
dfs(v,x,c^1);
l[x]=max(l[x],l[v]-1);
r[x]=min(r[x],r[v]+1);
}
if(l[x]>r[x]) end;
} void dfs2(int x,int fa) {
if(!fa) val[x]=l[x];
else if(val[fa]-1>=l[x]) val[x]=val[fa]-1;
else val[x]=val[fa]+1;
for(int v,i=head[x];i;i=e[i].nxt) if((v=e[i].to)!=fa) dfs2(v,x);
} int main() {
read(n);for(int i=1,x,y;i<n;i++) read(x),read(y),ins(x,y);
read(m);
for(int i=1,x,y;i<=m;i++) {
read(x),read(y);if(i==1) rt=x;
col[x]=abs(y)&1;l[x]=r[x]=y;vis[x]=1;
}
dfs(rt,0,col[rt]);
dfs2(rt,0);
puts("Yes");for(int i=1;i<=n;i++) write(val[i]);
return 0;
}

[AT2148] [arc063_c] Integers on a Tree的更多相关文章

  1. 【例题收藏】◇例题·III◇ 木と整数 / Integers on a Tree

    ◇例题·III◇ 木と整数 / Integers on a Tree 只需要一个美妙的转换,这道题就会变得无比美妙…… 来源:+AtCoder 2148(ARC-063 E)+ ◆ 题目大意 给定一棵 ...

  2. AtCoder Regular Contest 063 E:Integers on a Tree

    题目传送门:https://arc063.contest.atcoder.jp/tasks/arc063_c 题目翻译 给你一个树,上面有\(k\)个点有权值,问你是否能把剩下的\(n-k\)个点全部 ...

  3. POJ3468--A Simple Problem with Integers(Splay Tree)

    虽然有点难,但是这套题都挂了一个月了啊喂…… 网上模板好多……最后还是抄了kuangbin聚聚的,毕竟好多模板都是抄他的,比较习惯…… POJ 3468 题意:给n个数,两种操作,区间整体加一个数,或 ...

  4. 【ARC063E】Integers on a tree

    Description 给定一棵\(n\)个点的树,其中若干个点的权值已经给出.现在请为剩余点填入一个值,使得相邻两个点的差的绝对值恰好为1.请判断能否实现,如果能,请将方案一并输出. Solutio ...

  5. 2018.09.22 atcoder Integers on a Tree(构造)

    传送门 先考虑什么时候不合法. 第一是考虑任意两个特殊点的权值的奇偶性是否满足条件. 第二是考虑每个点的取值范围是否合法. 如果上述条件都满足的话就可以随便构造出一组解. 代码: #include&l ...

  6. 【LeetCode OJ】Construct Binary Tree from Preorder and Inorder Traversal

    Problem Link: https://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-trave ...

  7. 【LeetCode OJ】Construct Binary Tree from Inorder and Postorder Traversal

    Problem Link: https://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-trav ...

  8. 【LeetCode OJ】Convert Sorted Array to Binary Search Tree

    Problem Link: http://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Same idea ...

  9. #Leet Code# Convert Sorted Array to Binary Search Tree

    描述:递归 代码: class Solution: # @param num, a list of integers # @return a tree node def sortedArrayToBS ...

随机推荐

  1. apache-kylin-2.5.2-bin-cdh57与cdh-5.13.0集群整合运用

    1.下载kylin最新版apache-kylin-2.5.2-bin-cdh57: 2.解压配置环境变量: export BASE_PATH="/opt/cloudera/parcels/C ...

  2. springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法

    使用注解方式在类中(Controller)来装载request时,是可以正常使用request的(必须在启动时才注入,所以不支持热部署),但是同样使用这种方式在已经装载了 request的情况下装载  ...

  3. springmvc controller常见问题

    controller 的各种操作都是依赖服务器启动后来注入很多功能的,所以热部署经常会没有效果(因为没有被注入,除非在 方法名() 的括号中定义对象 [ 例如: HttpServletResponse ...

  4. 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件

    查看Oracle数据库表空间大小(空闲.已使用),是否要增加表空间的数据文件 1.查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1 ...

  5. WebGL射线拾取模型——八叉树优化

    经过前面2篇WebGL射线拾取模型的文章,相信大家对射线和模型面片相交的原理已经有所了解,那么今天我们再深入探究关于射线拾取的一个问题,那就是遍历场景中的所有与射线相交的模型的优化问题.首先我们来复习 ...

  6. mysql 无法启动,错误1067,进程意外终止

    在做项目启动mysql数据库时,经常出现 这个错误,今天总结一下 //查看了网上很多的方法,都不适用,但或许对你适用.ps:网上只提供了怎么解决这个问题,但是没有将怎么去发现问题,对症下药才是王道.而 ...

  7. Java解惑之TreeSet是如何去重的

    引言: 最近在处理一个问题,大致是这个样子,从数据库里面取出一个集合,取出来的数据放到一个JavaBean里面.结果得到的集合长度为1. TreeSetSet的一个实现,默认实现排序:故TreeSet ...

  8. 套接口socket编程(Client/Server编程实例)

    基本概念 套接口也就是网络中的ID.网络通信,归根到底还是进程间通信(不同计算机上的进程间的通信).在网络中,每一个节点(计算机或路由器)都有一个网络地址,也就是IP地址. IP地址:在网络中唯一标识 ...

  9. 多重共性和VIF检验

    图片来源https://wenku.baidu.com/view/7008df8383d049649b66581a.html 和 https://wenku.baidu.com/view/6acdf9 ...

  10. ShipStation Now Uses AWS And Amazon Fulfillment To Automatically Ship From eBay, Sears And Other Marketplaces

    ShipStation today unveiled a first-of-its-kind service to leverage Amazon Web Services and Amazon.co ...