信号塔(树形dp)

信号塔(树形dp)

题目链接

思路

典中典,看代码

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
vector<pair<int,int> >v[N];
int f[N][2], ans[N];
void dfs(int x, int fa) {
	f[x][0] = 0;
	f[x][1] = 1;
	for(auto y : v[x]) {
		if(y.first == fa)continue;
		dfs(y.first, x);
		f[x][0] += f[y.first][1];
		f[x][1] += min(f[y.first][0], f[y.first][1]);
	}
}
void dfs2(int x, int fa, int id) {
	if(fa) {
		int f0 = f[fa][0] - f[x][1], f1 = f[fa][1] - min(f[x][0], f[x][1]);
		ans[id] = min(f[x][0], f[x][1]) + min(f0, f1);
		f[x][0] += f1;
		f[x][1] += min(f1, f0);
	}
	for(auto y : v[x]) {
		if(y.first == fa)continue;
		dfs2(y.first, x, y.second);
	}
}
int main() {
	int T, n, a, b;
	scanf("%d", &T);
	while(T--) {
		scanf("%d", &n);
		for(int i = 1; i <= n; i++)
			v[i].clear();
		for(int i = 1; i < n; i++) {
			scanf("%d%d", &a, &b);
			v[a].push_back(make_pair(b, i));
			v[b].push_back(make_pair(a, i));
		}
		dfs(1, 0);
		dfs2(1, 0, 0);
		for(int i = 1; i < n; i++)
			printf("%d ", n - ans[i]);
		puts("");
	}
} 

相关推荐

  1. 信号树形dp

    2024-04-21 04:02:02       9 阅读
  2. 动态规划-树形DP入门-自上而下树形DP

    2024-04-21 04:02:02       33 阅读
  3. C. Infected Tree -树形dp

    2024-04-21 04:02:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 04:02:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 04:02:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 04:02:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 04:02:02       18 阅读

热门阅读

  1. Ocr识别

    2024-04-21 04:02:02       12 阅读
  2. 音视频、网络带宽等常用概念详解

    2024-04-21 04:02:02       13 阅读
  3. pytorch中模型训练的学习率动态调整

    2024-04-21 04:02:02       11 阅读
  4. web应用使用spring

    2024-04-21 04:02:02       16 阅读
  5. 2024.4.20力扣每日一题——组合总和

    2024-04-21 04:02:02       11 阅读
  6. 游戏中的伤害类型

    2024-04-21 04:02:02       11 阅读
  7. 正则表达式大全,30个正则表达式详细案例

    2024-04-21 04:02:02       17 阅读
  8. 上海计算机学会2023年12月月赛C++丙组T2移动复位

    2024-04-21 04:02:02       13 阅读
  9. 搭建vue3组件库(一):Monorepo项目搭建

    2024-04-21 04:02:02       16 阅读
  10. Docker常见命令学习

    2024-04-21 04:02:02       17 阅读
  11. mac修改/etc/profile导致终端所有命令不可使用

    2024-04-21 04:02:02       16 阅读