• CF120F Spiders


    知识点:贪心,树的遍历

    难度:5

    我真的是操了,这已经不知道是多少次因为无向边而把数组开小导致一直卡着,这个题的题意就是有若干棵无根树,问把这些树拼接起来最长的直径能有多少,总体的思路就是对于每个无根树,我们都让他们贡献出最长的直径,这样拼接起来得到的树一定直径最长,题解里面说了还好是最长,那么这样是比较简单的,这样贪心即可,看来如果是最短那么会更难一点,

    然后就是子操作,如何求一个无根树的最长的直径,看题解里面说了有两种方法,一种是两遍的dfs或bfs,一种是树形dp,那么我现在肯定只能用搜索来做,具体的方法就是我们先任取一个点,求出以他为根的最深的节点,然后再以那个最深的节点为根再进行一次dfs,这样第二次求出来的最深的深度就是这个无根树的最长的直径,第一次接触无根树的概念,不是很熟悉,无根树虽然边的数目也是顶点数减一,但是边是无向的,所以我们涉及到边的数组要开成原来的2倍,

    一开始想的暴力求无根树直径做法超时了,也是很不懂为啥会超时,

    1. #include
    2. using namespace std;
    3. const int N = 105;
    4. int tot, ver[N * 2], nxt[N * 2], head[N];
    5. int n, vis[N], dep[N], dmax, root;
    6. void add(int x, int y) {
    7. ver[++tot] = y;
    8. nxt[tot] = head[x]; head[x] = tot;
    9. }
    10. void dfs(int v) {
    11. vis[v] = 1;
    12. for (int i = head[v]; i; i = nxt[i]) {
    13. int y = ver[i];
    14. if (vis[y]) continue;
    15. dep[y] = dep[v] + 1;
    16. if (dep[y] > dmax) {
    17. dmax = dep[y];
    18. root = y;
    19. }
    20. dfs(y);
    21. }
    22. }
    23. int main() {
    24. freopen("input.txt","r",stdin);
    25. freopen("output.txt","w",stdout);
    26. int T;
    27. cin >> T;
    28. int ans = 0;
    29. while (T--) {
    30. tot = 0;
    31. memset(head, 0, sizeof(head));
    32. memset(vis, 0, sizeof(vis));
    33. memset(dep, 0, sizeof(dep));
    34. dmax = -1;
    35. cin >> n;
    36. for (int i = 1; i <= n - 1; i++) {
    37. int x, y;
    38. cin >> x >> y;
    39. add(x, y);
    40. add(y, x);
    41. }
    42. dfs(1);
    43. memset(vis, 0, sizeof(vis));
    44. memset(dep, 0, sizeof(dep));
    45. dmax = -1;
    46. dfs(root);
    47. ans += dmax;
    48. }
    49. cout << ans;
    50. return 0;
    51. }

  • 相关阅读:
    电容笔有什么用?Ipad2018电容笔推荐
    部署springboot打包不打包配置文件,配置文件为外部配置文件使用 (真实场景)
    Citrix XenDesktop云桌面单点登录XenApp虚拟应用小技巧
    SpringBoot
    linux安装kafka
    区分axios在开发环境和生产环境的请求基础地址
    Java并发编程之Future原理分析
    【c语言】通讯录【动态版本:有排序和文件操作】
    贪心算法与活动选择问题和背包问题
    16 Makefile Conventions
  • 原文地址:https://blog.csdn.net/m0_73035684/article/details/128086014