原题链接(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+优化)相关推荐

  1. AtCoder2362 - Splatter Painting - DFS+思维

    1.题目描述: B - Splatter Painting Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem St ...

  2. 2019.11.2图论专题(AtCoder Splatter Painting、President and Roads、Shortest Cycle、ISlands II)

    D:AtCoder Grand Contest 012 Splatter Painting 题目描述 Squid喜欢在图中为一些顶点染色(毕竟是鱿鱼 ) 现在有一张由 N 个顶点和 M 条边组成的简单 ...

  3. AT2362 [AGC012B] Splatter Painting(思维、dfs染色、剪枝)

    AT2362 [AGC012B] Splatter Painting 题意 给一个n个点m条边的无向图,有q次操作 第i次操作,给出v,d,c,把所有到点v的距离不超过d的点都染上颜色c 问最后每个点 ...

  4. AtCoder Grand Round 012B Splatter Painting

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. Splatter Painting

    题目链接:Splatter Painting 因为距离很小. 所以,我们可以逆向操作,当前仅当这个点未被染色才去递归子节点.然后如果枚举到这个点,之前一个到过的节点还能到的距离大于当前还能到的距离就r ...

  6. stcoder Splatter Painting 记忆化搜索

    5647: Splatter Painting 时间限制: 2 Sec  内存限制: 256 MB 提交: 32  解决: 16 [提交] [状态] [讨论版] [命题人:admin] 题目描述 Sq ...

  7. 动态规划初识(从dfs到dfs优化到动态规划顺推和逆推)

    思想:动态规划是通过组合子问题来解决问题的,是用于求解包含重叠子问题的最优化问题的方法. 入门题目:数字三角形 题目描述:给出了一个数字三角形.从三角形的顶部到底部有很多条不同路径.对于每条路径,把路 ...

  8. 【AtCoder】【思维】【图论】Splatter Painting(AGC012)

    题意: 有一个含有n个点的无向图,所有的点最初颜色均为0.有q次操作,每次操作将v[i]周围的距离小于等于d[i]的点全部都染成颜色c[i].最后输出每个点的最终的颜色. 数据范围: 1<=n, ...

  9. Atcoder Grand Contest 012 B - Splatter Painting解题报告

    题目:http://agc012.contest.atcoder.jp/tasks/agc012_b 有一个n点m边的图,(不一定联通) 还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜 ...

最新文章

  1. SAP MM模块相关透明表收集
  2. linux系统用xset命令,专 linux命令之set x详解
  3. 软件测试自学钢琴考级,钢琴考级被音基难倒?不要慌,跟着这款钢琴陪练APP一起练...
  4. 2016年第七届蓝桥杯 - 省赛 - C/C++大学A组 - F. 寒假作业
  5. Spring学习(三)--Spring的IOC
  6. 鼠标经过替换背景和文字
  7. Flowable 数据库表结构 ACT_RU_IDENTITYLINK
  8. 【Vue案例二】实现对表单数据的添加、删除以及关键字查询操作
  9. 花滑三周连跳_花滑女单短节目惊现三周半跳 称就像做梦一样
  10. linux 自学系列:touch 命令
  11. scala.的Enumeration枚举示例(转)
  12. 超简单的ubuntu18.04安装teamview
  13. 西威变频器avo下载调试资料_全程图解变频器应用与检测技能
  14. 摩托罗拉gp3688说明书_摩托罗拉GP3688对讲机充电器电路原理分析
  15. 移动app性能测试工具:Emmagee使用介绍
  16. Unhandled exception at 0x000007FEFD19A06D in test.exe: Microsoft C++ exception: cv::Exception at mem
  17. 富文本框wangEditor
  18. 专转本-数学考试大纲
  19. win10的系统mysql服务器地址,win10注册mysql服务器地址
  20. html中的列表、表格、表单

热门文章

  1. jQuery动画基础讲解(教你玩转jQuery动画)
  2. 嵌入式linux驱动-LCD液晶屏驱动
  3. intptr_t详解
  4. 计算机专业必须要i7处理器,电脑配置i7处理器的人不一定都懂电脑
  5. Intel x86体系结构的资料
  6. Android应用分身检测
  7. 松贷后房价涨跌内幕 吃透楼市12个规律不吃亏
  8. scribed 安装
  9. 愤世嫉俗的程序员,在网上当起了“键盘侠”
  10. ip地址配置 mongodb_【已解决】给MongoDB限制IP访问