Atcoder #2362 Splatter Painting(dfs+优化)
原题链接(vjudge上的)
这道题的大意是:对于一个无向图,有n个节点和m条边,每个操作将与节点v的距离小于等于d的节点涂为颜色c。n,m,p<=105n,m,p,d<=10d。
给出输入输出样例:
要解决这道题:我们只需要注意两个点:
1.离线处理操作,将操作倒序进行处理,这样就可以避免一个点被重复染色
2.基于第1点,在dfs时记录该点在被涂色是距离涂色中心点v的距离r,当这个点再次被搜到时,只需判断当前的r是否大于之前记录的r,否则return。
时间复杂度能控制为O(10n) (每个点最多被搜10次)
附上代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 200050
#define add(u,v) (to[++top]=head[u],head[u]=top,w[top]=v)
#define For(x) for(int h=head[x],o=w[h];h;o=w[h=to[h]])
using namespace std;
int n,m,to[maxn],head[maxn],w[maxn],u,v,top;
int a[maxn],b[maxn],c[maxn],co[maxn],r[maxn],q,i;
void dfs(int x,int rg,int col)
{if (rg<=r[x]||rg<=0) return;r[x]=rg; if (co[x]==0) co[x]=col;For(x) dfs(o,rg-1,col);
}
int main()
{scanf("%d%d",&n,&m);while (m--){scanf("%d%d",&u,&v);add(u,v); add(v,u);}scanf("%d",&q);for (i=1;i<=q;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]);memset(co,0,sizeof(co)); memset(r,0,sizeof(r));for (i=q;i>=1;i--) dfs(a[i],b[i]+1,c[i]);for (i=1;i<=n;i++) printf("%d\n",co[i]);return 0;
}
Atcoder #2362 Splatter Painting(dfs+优化)相关推荐
- AtCoder2362 - Splatter Painting - DFS+思维
1.题目描述: B - Splatter Painting Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem St ...
- 2019.11.2图论专题(AtCoder Splatter Painting、President and Roads、Shortest Cycle、ISlands II)
D:AtCoder Grand Contest 012 Splatter Painting 题目描述 Squid喜欢在图中为一些顶点染色(毕竟是鱿鱼 ) 现在有一张由 N 个顶点和 M 条边组成的简单 ...
- AT2362 [AGC012B] Splatter Painting(思维、dfs染色、剪枝)
AT2362 [AGC012B] Splatter Painting 题意 给一个n个点m条边的无向图,有q次操作 第i次操作,给出v,d,c,把所有到点v的距离不超过d的点都染上颜色c 问最后每个点 ...
- AtCoder Grand Round 012B Splatter Painting
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Splatter Painting
题目链接:Splatter Painting 因为距离很小. 所以,我们可以逆向操作,当前仅当这个点未被染色才去递归子节点.然后如果枚举到这个点,之前一个到过的节点还能到的距离大于当前还能到的距离就r ...
- stcoder Splatter Painting 记忆化搜索
5647: Splatter Painting 时间限制: 2 Sec 内存限制: 256 MB 提交: 32 解决: 16 [提交] [状态] [讨论版] [命题人:admin] 题目描述 Sq ...
- 动态规划初识(从dfs到dfs优化到动态规划顺推和逆推)
思想:动态规划是通过组合子问题来解决问题的,是用于求解包含重叠子问题的最优化问题的方法. 入门题目:数字三角形 题目描述:给出了一个数字三角形.从三角形的顶部到底部有很多条不同路径.对于每条路径,把路 ...
- 【AtCoder】【思维】【图论】Splatter Painting(AGC012)
题意: 有一个含有n个点的无向图,所有的点最初颜色均为0.有q次操作,每次操作将v[i]周围的距离小于等于d[i]的点全部都染成颜色c[i].最后输出每个点的最终的颜色. 数据范围: 1<=n, ...
- Atcoder Grand Contest 012 B - Splatter Painting解题报告
题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...
最新文章
- SAP MM模块相关透明表收集
- linux系统用xset命令,专 linux命令之set x详解
- 软件测试自学钢琴考级,钢琴考级被音基难倒?不要慌,跟着这款钢琴陪练APP一起练...
- 2016年第七届蓝桥杯 - 省赛 - C/C++大学A组 - F. 寒假作业
- Spring学习(三)--Spring的IOC
- 鼠标经过替换背景和文字
- Flowable 数据库表结构 ACT_RU_IDENTITYLINK
- 【Vue案例二】实现对表单数据的添加、删除以及关键字查询操作
- 花滑三周连跳_花滑女单短节目惊现三周半跳 称就像做梦一样
- linux 自学系列:touch 命令
- scala.的Enumeration枚举示例(转)
- 超简单的ubuntu18.04安装teamview
- 西威变频器avo下载调试资料_全程图解变频器应用与检测技能
- 摩托罗拉gp3688说明书_摩托罗拉GP3688对讲机充电器电路原理分析
- 移动app性能测试工具:Emmagee使用介绍
- Unhandled exception at 0x000007FEFD19A06D in test.exe: Microsoft C++ exception: cv::Exception at mem
- 富文本框wangEditor
- 专转本-数学考试大纲
- win10的系统mysql服务器地址,win10注册mysql服务器地址
- html中的列表、表格、表单