博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1272 重建道路
阅读量:5242 次
发布时间:2019-06-14

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

题意是删除一些边使原图剩P个节点,那么我们在进行树形dp的时候就要考虑这条是不是删,但这样就不太好转移。

那么我们转化一下,假设把所有的边先都删除,那么我们要考虑这条边是不是要加进去,这要就好转移多了,就是一个背包+树形dp。

#include 
#include
#include
#include
using namespace std;inline int read(){ char ch = getchar(); int f = 1 , x = 0; while(ch > '9' || ch < '0'){
if(ch == '0') f = -1;ch = getchar();} while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0'; ch = getchar();} return x * f;}int n,p,u,v;struct Edge{ int from,to,next;}edge[200 * 2];int head[200],tot;int du[200],f[200][200],ans=1e9;//f[i][j]:表示以i为根的子树里面截取j个节点的最少删边数void add(int u,int v){ edge[++tot].from = u; edge[tot].to = v; edge[tot].next = head[u]; head[u] = tot;}void dfs(int x,int fa){ if(fa != 0) f[x][1] = du[x] - 1; else f[x][1] = du[x]; for(int i=head[x];i;i=edge[i].next){ int v = edge[i].to; if(v != fa){ dfs(v , x); for(int j=p;j>=1;j--) for(int k=1;k

 

转载于:https://www.cnblogs.com/Stephen-F/p/9866354.html

你可能感兴趣的文章
Js时间处理
查看>>
Java项目xml相关配置
查看>>
按钮实现A标签新窗口打开(不用window.open)
查看>>
Array对象
查看>>
MainActivity
查看>>
三维变换概述
查看>>
android 数字键盘制作
查看>>
Cpp: object lifetime
查看>>
[8.08考试] 隔膜
查看>>
Board Game CodeForces - 605D (BFS)
查看>>
正则表达式初探
查看>>
Python 中 open()文件操作的方式
查看>>
实验三
查看>>
Android开发高手课 - 02 崩溃优化(下):应用崩溃了,你应该如何去分析?
查看>>
jenkins:忘记登录密码怎么办
查看>>
nodejs的事件驱动机制与传统webserver的多线程处理机制对比
查看>>
HDU 5387 Clock(分数类+模拟)
查看>>
基于JQuery实现表单元素值的回写
查看>>
[转]Android Studio启动时出现unable to access android sdk add-on list
查看>>
转自CSDN,关于状态机
查看>>