题目源:http://agc012.contest.atcoder.jp/tasks/agc012_b
存边的方法我就不说了
这题的做法说白了就是暴力+优化
染色从后往前染(不解释)
对于每个点,标记该点已染色的最大范围,搜到该点时,若还需染色的范围比标记小就不用染下去了
下面贴代码,注意数组要开两倍

type arr=array[0..200001]of longint;
var n,q,m,i,j,a,b:longint;v,d,c,max,cl,head,next,start,endd:arr;bb,bc:array[0..200001]of boolean;
procedure dfs(k,dis,col:longint);
var i:longint;
beginbb[k]:=true;if(max[k]>=dis)and(bc[k])then beginbb[k]:=false;exit;end;max[k]:=dis;if not bc[k]then begincl[k]:=col;bc[k]:=true;end;if dis>0 then for i:=start[k] to endd[k] doif not bb[next[i]]then dfs(next[i],dis-1,col);bb[k]:=false;
end;
procedure sort(l,r:longint);
var i,j,x,y:longint;
begini:=l;j:=r;x:=head[(l+r) div 2];repeatwhile head[i]<x do inc(i);while x<head[j] do dec(j);if not(i>j) then beginy:=head[i];head[i]:=head[j];head[j]:=y;y:=next[i];next[i]:=next[j];next[j]:=y;inc(i);j:=j-1;end;until i>j;if l<j then sort(l,j);if i<r then sort(i,r);
end;
beginreadln(n,m);fillchar(cl,sizeof(cl),0);fillchar(max,sizeof(max),0);fillchar(bb,sizeof(bb),false);fillchar(bc,sizeof(bc),false);for i:=1 to m do beginreadln(a,b);head[i]:=a;head[i+m]:=b;next[i]:=b;next[i+m]:=a;end;m:=m*2;sort(1,m);start[head[1]]:=1;for i:=2 to m do if head[i]<>head[i-1]then beginendd[head[i-1]]:=i-1;start[head[i]]:=i;end;endd[head[m]]:=m;readln(q);for i:=q downto 1 do readln(v[i],d[i],c[i]);for i:=1 to q do dfs(v[i],d[i],c[i]);for i:=1 to n do writeln(cl[i]);
end.

Splatter Painting题目代码相关推荐

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

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

  2. Splatter Painting

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

  3. stcoder Splatter Painting 记忆化搜索

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

  4. AtCoder2362 - Splatter Painting - DFS+思维

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

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

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

  6. AtCoder Grand Round 012B Splatter Painting

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

  7. 数学实验课MATLAB实验报告二(题目+代码)

    目录 前言 1.(1) 题目 代码 1.(2) 题目 代码 1.(3) 题目 代码 1.(4) 题目 代码 2. 题目 代码 总结 前言 2022年10月21日晴转多云转晴然后黑天了,不冷.今天有一件 ...

  8. 数学实验课MATLAB实验报告一(题目+代码)

    目录 前言 程序设计部分题目 1.(1) 题目 代码 1.(2) 题目 代码 1.(3) 题目 代码 2. 题目 代码 作图部分题目 3. 题目 代码 4. 题目 代码 5. 题目 代码 符号运算部分 ...

  9. 华师大c语言作业答案,2018华东师范大学计算机系机试题目代码

    Problem A 给一个小学生都会算的1位数与1位数运算的代数式,请你求出这个表达式的值. 表达式仅含+-*/四种运算,题目保证0不为除数. Sample Input 1: 1+1 Sample O ...

最新文章

  1. ASP.NET MVC实践系列5-结合jQuery
  2. autocomplete触发事件_输入内容的自动匹配(AutoCompleteTextView)的点击事件遇到的问题...
  3. ICLR 2020 | “同步平均教学”框架为无监督学习提供更鲁棒的伪标签
  4. Linux常用命令:用户
  5. pfamscan 的使用_Hmmer安装与使用
  6. 通俗地解释脏读、不可重复读、幻读
  7. linux文件传输到另一台linux,使用scp将文件/目录拷贝到另一台Linux主机上
  8. [计算机网络]httpserver--如何解析HTTP请求报文
  9. dirsearch工具(Web目录爆破)
  10. Oracle CASE WHEN 使用及保留两位小数
  11. flashfxp链接Linux
  12. 听老外吐槽框架设计,Why I Hate Frameworks?
  13. QT pro中加入文件拷贝方法
  14. Mobicomm 2019
  15. 2018世界人工智能大会总结
  16. 什么是SQL注入攻击?SQL注入攻击的危害以及防护
  17. MySQL批量导入Excel数据
  18. Vue源码之计算属性watcher
  19. [操作系统] 王道2023操作系统208页图3.26勘误
  20. 单片机点阵 LED 设计显示屏,超详细!

热门文章

  1. Python与金融:为什么将Python用于金融
  2. Cascade Classification
  3. python唐诗分析综合_Python利器之胎教《唐诗三百首》文本分析
  4. SAP-FI-查看供应商,客户,总账科目记账明细
  5. python实现整数从低位到高位输出与从高位到低位输出
  6. PowerPMAC技术培训------2、PowerPMAC产品介绍
  7. linux协议栈学习 第七节 GRO的实现
  8. 2010级清华计算机专业校友,清华计算机系主任答2010高考考生问-清华大学.PDF
  9. 用机器学习计算工作技能匹配度
  10. pdf2htmlEX 安装与保持最新版本