zoukankan      html  css  js  c++  java
  • hdu4714Tree2cycle

    链接

    树上的一些操作还是不是太好想 直接dfs下去 不是最优的 

    一个节点最多保留两个度 如果它有两个以上的子节点 那么就与父节点断开 与k-2个子节点断开 再重新连

     1 #pragma comment(linker, "/STACK:1024000000,1024000000")
     2 #include <iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<stdlib.h>
     6 #include<algorithm>
     7 using namespace std;
     8 #define N 2000010
     9 struct node
    10 {
    11     int u,v,next;
    12 }ed[N<<1];
    13 int n,head[N],t,ans;
    14 void init()
    15 {
    16     t = 0;
    17     memset(head,-1,sizeof(head));
    18 }
    19 void add(int u,int v)
    20 {
    21     ed[t].u = u;
    22     ed[t].v = v;
    23     ed[t].next = head[u];
    24     head[u] = t++;
    25 }
    26 int dfs(int pre,int u)
    27 {
    28     int i;
    29     int s=0;
    30     for(i = head[u] ; i!=-1 ; i = ed[i].next)
    31     {
    32         int v = ed[i].v;
    33         if(v==pre) continue;
    34         s+=dfs(u,v);
    35     }
    36     if(s>=2)
    37     {
    38         if(u!=1)
    39         ans+=2*(s-1);
    40         else
    41         ans+=2*(s-2);
    42         return 0;
    43     }
    44     return 1;
    45 }
    46 int main()
    47 {
    48     int i,tt,u,v;
    49     scanf("%d",&tt);
    50     while(tt--)
    51     {
    52         scanf("%d",&n);
    53         init();ans=0;
    54         for(i = 1; i < n ; i++)
    55         {
    56             scanf("%d%d",&u,&v);
    57             add(u,v);
    58             add(v,u);
    59         }
    60         dfs(-1,1);
    61         printf("%d
    ",ans+1);
    62     }
    63     return 0;
    64 }
    View Code
  • 相关阅读:
    yarn 0.9.0 build spark
    redhat6.4上build storm 0.9.0.1
    redhat6.4安装storm集群-4节点
    Hadoop 2.2.0 4结点集群安装 非HA
    redhat6.4上安装mysql
    redhat6.4上用apache建立os repos
    Hive Over HBase
    Hadoop 2.2.0学习笔记20131210
    Hadoop 2.2.0学习笔记20131209
    IDH2.5.1. Pain Points
  • 原文地址:https://www.cnblogs.com/shangyu/p/3317001.html
Copyright © 2011-2022 走看看