2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数
/**
题目:Color
链接:https://oj.ejq.me/problem/23
题意:给定一颗树,将树上的点最多染成m种颜色,有些节点不可以染成某些颜色。相邻节点颜色不同。求染色方法数。
思路:树形dp,定义dp[i][j]表示以i为根,i节点染色为j时候的子树的染色方法数。 */
#include<bits/stdc++.h>
#define LL long long
using namespace std;
typedef long long ll;
const int maxn = 2e4+;
ll dp[maxn][];///dp[i][j]表示以i为根,i节点染色为j时候的子树的染色方法数。
ll mod = 1e7+;
vector<int> G[maxn];///图
vector<int> color[maxn];///节点i可以染的颜色;
ll cnt[maxn];///记录节点i的子树的方法数。可以减少一层循环。优化时间。
int n, m;
void init()
{
for(int i = ; i <= n; i++){
G[i].clear();
color[i].clear();
}
memset(cnt, , sizeof cnt);
memset(dp, , sizeof dp);
}
void dfs(int r,int f)
{
int lenr = G[r].size();
int lenc = color[r].size();
for(int j = ; j < lenr; j++){
int &v = G[r][j];
if(v==f) continue;
dfs(v,r);
}
for(int i = ; i < lenc; i++){
ll res = ;
int &c = color[r][i];
for(int j = ; j < lenr; j++){
int &v = G[r][j];
if(v==f) continue;
res = res*(cnt[v]-dp[v][c]+mod)%mod;
}
dp[r][c] = res;
cnt[r] = (cnt[r]+dp[r][c])%mod;
}
}
int main()
{
while(scanf("%d%d",&n,&m)==)
{
init();
int x, y;
for(int i = ; i < n; i++){
scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
for(int i = ; i <= n; i++){
for(int j = ; j <= m; j++){
scanf("%d",&x);
if(x){
color[i].push_back(j);
}
}
} dfs(,); printf("%lld\n",cnt[]);
/* for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
printf("%d ",dp[i][j]);
}
cout<<endl;
}*/ }
return ;
}
2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数的更多相关文章
- 2017 Wuhan University Programming Contest (Online Round) Lost in WHU 矩阵快速幂 一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。
/** 题目:Lost in WHU 链接:https://oj.ejq.me/problem/26 题意:一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开. ...
- 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟
/** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...
- 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!
D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...
- zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light(广搜)
题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意 ...
- The 16th Zhejiang University Programming Contest-
Handshakes Time Limit: 2 Seconds Memory Limit: 65536 KB Last week, n students participated in t ...
- 2017 Bangladesh National High School Programming Contest ( National Round, Senior Group ), NHSPC 2017 题解
[题目链接] A. Charm Is Not Always Enough 模拟一下就可以了. #include <bits/stdc++.h> using namespace std; i ...
- The 18th Zhejiang University Programming Contest Sponsored by TuSimple
Pretty Matrix Time Limit: 1 Second Memory Limit: 65536 KB DreamGrid's birthday is coming. As hi ...
- 写完代码就去吃饺子|The 10th Henan Polytechnic University Programming Contest
河南理工大学第十届校赛 很久没有组队打比赛了,好吧应该说很久没有写题了, 三个人一起玩果然比一个人玩有趣多了... 前100分钟过了4题,中途挂机100分钟也不知道什么原因,可能是因为到饭点太饿了?, ...
- The 15th Zhejiang University Programming Contest
a ZOJ 3860 求和大家不一样的那个数,签到,map水之 #include<cstdio> #include<map> using namespace std; map ...
随机推荐
- winform groupbox控件放到窗体中间位置
1. 在Form中放一个控件,让其在启动时始终居中 int gLeft = this.Width / 2 - groupControl1.Width / 2; int gTop = this.Heig ...
- SecureCRT的一些问题解决
按下退格键发送删除命令 设置缓冲 拷贝与粘贴 多标签切换 ctrl + tab . 如果同时按下shift,可以方向切换
- [转] c++ try catch 问题
windhaunting,原文地址 以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: ...
- 直接拿来用!最火的iOS开源项目(三)
相比Android,GitHub上的iOS开源项目更可谓是姹紫嫣红.尽管效果各异,但究其根源,却都是因为开发者本身对于某种效果的需求以及热爱.在“直接拿来用!最火的iOS开源项目”系列文章(一).(二 ...
- webpack配置构建环境问题汇总
环境:node 6.9.5 npm 3.10.10 问题一:Module build failed: TypeError: Path must be a string. Received undef ...
- saltstack之salt event事件用法
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- ibatis传入list对象
在使用ibatis的时候经常需要传入list对象,sql语句如下. <select id="GET-PERSONS" parameterClass="java.ut ...
- elasticsearch term 查询二:Range Query
Range Query 将文档与具有一定范围内字词的字段进行匹配. Lucene查询的类型取决于字段类型,对于字符串字段,TermRangeQuery,对于数字/日期字段,查询是NumericRang ...
- IIS支持伪静态(windows 2003)
IIS配置支持伪静态 ISAPI Rewrite 第一:首先我们需要下载一个ISAPI_Rewrite,有精简版和完全版,一般精简版只能对服务器全局进行配置,而完整版可以对服务器上的各个网站进行伪静态 ...
- Quartz定时框架入门
Quartz框架是Java开源的定时任务调度器,Quartz框架中有如下核心概念: 1. Job 任务接口,接口中只声明方法void execute(JobExecutionContext conte ...