您当前的位置: 首页 > 

先求一个导

暂无认证

  • 1浏览

    0关注

    291博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第一届ACC联赛 决赛 C(什么换根dp)

先求一个导 发布时间:2022-03-30 16:45:18 ,浏览量:1

题目 题意: 给定一棵n个点的有向树,选中一个点为根,使得到达个点的距离和最小。对于无法到达的点,可以将边进行翻转,求最少的翻转次数。 思路: 先建树嘛,给定的边边权为0,反边边权为1。随便选中一点root进行dfs,求出以root为根的最小代价。之后进行换根dp,这个换根还算简单的,连我都能想出来。。。 对于u的儿子j,如果根从u换成了j。 假设u到j的边权为1,换根以后j不需要代价即可到达u,所有u能到的点j也能到。f[j] = f[u] 假设u到j的边权为0,j到u边权则为1,需要1的代价从j到u。f[j] = f[u] + 1. 时间复杂度: O(n) 代码:

// Problem: 翻转树边
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/4384/
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define OldTomato ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define fir(i,a,b) for(int i=a;i            
关注
打赏
1662037414
查看更多评论
0.0359s