传送门

题意:
给你一个n个节点的简单无向图(无重边、自环),含有m条边。现在有q次操作。初始的时候所有点的颜色都为0。
每一次操作的描述如下:选择一个节点v[i],将与这个节点的距离小于等于d[i]的点全部都染成颜色c[i]。
现在要求你回答,完成这q次操作之后,每一个点的最终颜色是什么。

题解:
这道题d很小(≤10),可以暴力。但是直接暴力有可能会T(举个例子:菊花图)。
考虑将操作倒过来,那么就成了:将与这个节点的距离小于等于d[i]且还没有染色的点全部都染成颜色c[i]。
维护一个maxd[u]为u点操作到的最大的距离,那么当当前距离小于等于maxd[u]时,说明这次操作会被后面的操作抵消,可以忽略。
那么因为每个点最多只会被访问10次,所以时间复杂度为O(nd)O(nd)O(nd)。
注意这里不仅仅是起点要判断,访问到的点也要判断剩余距离和maxd的关系。

代码:

#include<cstdio>
#include<cstring>
#define INF 0x3f3f3f3f
#define maxn 100005
int n,m,q,s[maxn],d[maxn],x[maxn],maxd[maxn],c[maxn],que[maxn],fr,bk;
struct node { int v; node *nxt; } edge[maxn*2],*head[maxn],*ncnt;
void addedge(int u,int v)
{ncnt++;ncnt->v=v,ncnt->nxt=head[u];head[u]=ncnt;
}
void dfs(int u,int d,int x)
{if(maxd[u]>=d) return;if(!c[u]) c[u]=x;if(!d) return;maxd[u]=d;for(node *p=head[u];p;p=p->nxt) dfs(p->v,d-1,x);
}
int main()
{scanf("%d%d",&n,&m);ncnt=&edge[0];for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);addedge(u,v); addedge(v,u);}memset(maxd,-1,sizeof(maxd));scanf("%d",&q);for(int i=1;i<=q;i++) scanf("%d%d%d",&s[i],&d[i],&x[i]);for(int i=q;i;i--) dfs(s[i],d[i],x[i]); for(int i=1;i<=n;i++) printf("%d\n",c[i]);
}

AGC012B Splatter Painting相关推荐

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

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

  2. 【DP】AGC012B Splatter Painting

    分析: 很简单的DP水题. 定义DP(i,j)=(x,y)DP(i,j)=(x,y)DP(i,j)=(x,y)表示在i号点,将其周围j个格子全部转化为颜色y,其优先级为x的最优先操作. 只不过有点不同 ...

  3. AtCoder Grand Round 012B Splatter Painting

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

  4. Splatter Painting

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

  5. stcoder Splatter Painting 记忆化搜索

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

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

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

  7. AtCoder2362 - Splatter Painting - DFS+思维

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

  8. AGC 012 B - Splatter Painting

    题面在这里! (显然首先想到反着做比较简单,每个点取第一次被覆盖到的颜色) 发现d非常小,那么是否可以暴力覆盖呢??? 考虑一个稠密图..暴力肯定就gg了啊... 不过我们可以对每一个点 i 记一个m ...

  9. Atcoder #2362 Splatter Painting(dfs+优化)

    原题链接(vjudge上的) 这道题的大意是:对于一个无向图,有n个节点和m条边,每个操作将与节点v的距离小于等于d的节点涂为颜色c.n,m,p<=105n,m,p,d<=10d. 给出输 ...

最新文章

  1. 对人工神经网络“开刀”,利用神经科学消融法检测人工神经网络
  2. FP-growth算法高效发现频繁项集
  3. MySQL分组函数的介绍
  4. 16年蓝桥杯省赛-方格填数(dfs+回溯)
  5. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法
  6. 【软件工程】交付后维护
  7. 神州八号利用计算机,说到科技,我想大部分的人想到的是神州八号
  8. Win10系统中没有Microsoft Store(微软商城)解决方法【详细步骤】
  9. SpringBoot迷你天猫商城系统(附源码)
  10. 阻容降压电路:每个元器件计算选型
  11. html多行注释如何实现,javascript多行注释如何实现
  12. html基础实验的实验原理,实验1HTML基本标记的练习
  13. ERP标准成本计算需要哪些数据准备
  14. 【电路设计】TTLCMOS芯片型号总结
  15. 字符自编车牌号c语言,自编车牌号技巧,自编车牌号码大全
  16. 网易云音乐产品核心竞争力分析
  17. 微信小程序—一键复制文本
  18. AirTight C-65 系统启动日志
  19. [转]Android入门基础教程
  20. 云顶之弈机器人怎么拉人_LOL云顶之弈10.16b机器人怎么玩_云顶之弈10.16b机器人装备站位_3DM网游...

热门文章

  1. lr0文法分析表示例_LR0分析表
  2. 使用away3d 精灵表实现材质动画
  3. java 笔记本i7 i5_笔记本i5处理器和i7处理器哪个好
  4. node.js毕业设计安卓英语答题APP(程序+APP+LW)
  5. Godaddy域名如何使用DNSPod做DNS解析
  6. c语言编程票务系统,C语言课程设计票务管理系统
  7. win7 开启无线网
  8. 某IOT设备漏洞分析
  9. POSIX是什么?解决了什么问题?
  10. 数值积分:龙贝格求积