博客
关于我
[BZOJ4878]挑战NP-Hard
阅读量:304 次
发布时间:2019-03-04

本文共 790 字,大约阅读时间需要 2 分钟。

题目

思路

这两个问题,确实都是 N P − H a r d \tt{NP-Hard} NPHard 问题……那怎么做的出来呀?

但是 只需要解决其中一个,那就可以随便乱搞了。这是什么神仙题啊。

我们使用这样的方案: d f s \tt{dfs} dfs 对点进行染色。一个点的颜色设置成其中一个邻接点的颜色 + 1 +1 +1 ,且与邻接点的颜色均不同。比如可以设置为 mex \text{mex} mex 。注意我们并没有要求 c o l o r ≤ k color\le k colork ,我们只是单纯地将其染色而已。没有被确定颜色的邻接点就忽略。最先开始的点,颜色设置为 1 1 1

染色结束之后,如果所有点的颜色都不大于 k k k ,则问题一解决(根据染色的要求二);如果有点的颜色大于 k k k ,则问题二解决(根据染色的要求一,其邻接点中有一个的颜色恰好减少一,这个邻接点也存在一个邻接点的颜色恰好再减少一,直到颜色变为 1 1 1 ,则此路径长度为 k k k)。

代码

此处仅提供伪代码作为参考。

int color[MaxN];void dfs(int x){   	int mx = 0;	for(auto y : g[x]) // 使用邻接表,vector版本		mx = max(mx,color[y]);	color[x] = mx+1;	for(auto y : g[x])		if(color[y] == 0)			dfs(y);}void solve(){   	dfs(1);	bool colored = true;	for(int i=1; i<=n; ++i)		if(color[i] > k){   			输出路径;			colored = false;			break;		}	if(colored) 输出染色方案;}

转载地址:http://lqvq.baihongyu.com/

你可能感兴趣的文章
React中设置404页面
查看>>
BootstrapValidator手动触发部分验证
查看>>
vue调试工具vue-devtools安装及使用
查看>>
CSS总结div中的内容垂直居中的四种方法
查看>>
[BZOJ4878]挑战NP-Hard
查看>>
vue指令之v-for
查看>>
[CF1278F]Cards
查看>>
用postman测试url参数
查看>>
Vue的is属性
查看>>
vue组件传参 props default 数组/对象的默认值应当由一个工厂函数返回
查看>>
vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法
查看>>
js基础复习5-原型链与js的成员查找机制
查看>>
js基础复习8-call方法简单使用以及javascript继承
查看>>
【游记】被吊打DAY2
查看>>
微信公众号开发之素材管理
查看>>
mysql limit 1 (报错信息:Subquery returns more than 1 row)
查看>>
修改dynamic web module的版本大小
查看>>
Node.js response 页面中文乱码
查看>>
gitee 修改个人域名 个人空间地址 URL
查看>>
C++11中bind的使用错误
查看>>