Atcoder Grand Contest 012 B
来源:互联网 发布:c语言疯狂讲义 pdf 编辑:程序博客网 时间:2024/06/06 03:34
题目:http://agc012.contest.atcoder.jp/tasks/agc012_b
有一个n点m边的图,(不一定联通)
还有q个操作:每次将一个点v及其周围距离<=d的点涂成颜色c(可以覆盖)
现在询问每个点的颜色1≤N,M,Q≤10^5
1≤ai,bi,vi≤N
ai≠bi
0≤di≤10
1≤ci≤105
无自环,无重边
dfs在最坏情况下耗时10^5*10^5 = 10^10
此时可以倒序涂色,不覆盖颜色,并开一个记录数组防止无效访问,这样的话,每个点最多只会被访问10次
时间复杂度:O(10n) O(能过)
贴代码:(有点卡时限)
#include <cstdio>#define N 200100int n,m,q,i,dep[N],col[N],tot;bool vis[N];struct C {int v,d,c;} c[N];struct node {int to; node* nxt;} g[N],*last[N];inline void read(int &p) { char c = getchar(); p = 0; while (c < '0' || c > '9') c = getchar(); while (c >= '0' && c <= '9') p = p*10+c-48,c=getchar();}void dfs(int v,int d,int c) { vis[v] = true; if (!col[v]) col[v] = c; dep[v] = d; for (node *p=last[v];p;p=p->nxt) if (dep[p->to] < d-1 && !vis[p->to]) dfs(p->to,d-1,c); vis[v] = false;}int main() { read(n); read(m); for (i=0;i<m;i++) { int a,b; read(a); read(b); last[a] = &(g[tot++] = (node){b,last[a]}); last[b] = &(g[tot++] = (node){a,last[b]}); } read(q); for (i=0;i<q;i++) read(c[i].v),read(c[i].d),read(c[i].c); while (q--) dfs(c[q].v,c[q].d+1,c[q].c); for (i=1;i<=n;i++) printf("%d\n",col[i]);}
阅读全文
0 0
- AtCoder Grand Contest 012 B
- Atcoder Grand Contest 012 B
- AtCoder Grand Contest 017-B
- AtCoder Grand Contest 019 B
- AtCoder Grand Contest 012 A
- AtCoder Grand Contest 012 题解
- AtCoder Grand Contest 010 B(差分)
- AtCoder Grand Contest 010
- AtCoder Grand Contest 011
- AtCoder Grand Contest 018
- AtCoder Grand Contest 018
- Atcoder Grand Contest 019
- AtCoder Grand Contest 010
- AtCoder Grand Contest 008
- AtCoder Grand Contest 005【A栈模拟,B单调栈】
- 构造——AtCoder Grand Contest 010 B
- AtCoder Grand Contest 011 A\B 贪心、二分
- Atcoder Grand Contest 011E
- 对Android 系统的理解
- 我在项目实施中常用到的命令
- XSS(跨站脚本攻击)漏洞解决方案
- Android轮播banner的使用
- JSONP跨域请求AJAX
- Atcoder Grand Contest 012 B
- NKOJ 3709 走丢的奶牛
- Linux学习笔记(1)
- elasticsearch学习与使用
- 安装好Android Studio后打开新建项目时,一直在Building Gradle project info解决方法。
- Python学习笔记(26)-读取excel表格信息
- 微信小程序目录结构
- C++ 友元函数详解
- 腾讯云服务器免密登陆permission denied解决