zoukankan      html  css  js  c++  java
  • Codeforces 765 E. Tree Folding

    题目链接:http://codeforces.com/problemset/problem/765/E


    $DFS子$树进行$DP$

    大概分以下几种情况:

      1.为叶子,直接返回。

      2.长度不同的路径长度只有一条,显然可以合并成这一条的长度。

      3.长度不同的路径长度有两条,并且这个点为根,显然可以合并成这两条的长度和。

      4.其他的都不合法。

    注意:事实上如果第一次$DP$之后不合法要考虑换根再做一次


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<vector>
     5 #include<cstdlib>
     6 #include<set>
     7 #include<cmath>
     8 #include<cstring>
     9 using namespace std;
    10 #define maxn 1001000
    11 #define llg long long 
    12 #define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
    13 llg n,m,root;
    14 vector<llg>a[maxn];
    15 
    16 inline int getint()
    17 {
    18        int w=0,q=0; char c=getchar();
    19        while((c<'0' || c>'9') && c!='-') c=getchar(); if(c=='-') q=1,c=getchar(); 
    20        while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w;
    21 }
    22 
    23 void init()
    24 {
    25     llg x,y;
    26     cin>>n;
    27     for (llg i=1;i<n;i++)
    28     {
    29         x=getint(),y=getint();
    30         a[x].push_back(y),a[y].push_back(x);
    31     }
    32 }
    33 
    34 llg dfs(llg x,llg fa)
    35 {
    36     set<llg>s;
    37     llg w=a[x].size(),v;
    38     for (llg i=0;i<w;i++)
    39     {
    40         v=a[x][i];
    41         if (v==fa) continue;
    42         llg val=dfs(v,x);
    43         if (val==-1) return val;
    44         s.insert(val+1);
    45     }
    46     if (s.size()==1) return *s.begin();
    47     if (s.size()==0) return 0;
    48     if (s.size()==2)
    49     {
    50         if (fa) {root=x; return -1;}
    51         return *s.begin()+*s.rbegin();
    52     }
    53     return -1;
    54 }
    55 
    56 int main()
    57 {
    58     yyj("tree");
    59     init();
    60     llg ans=dfs(1,0);
    61     if (ans==-1 && root) ans=dfs(root,0);
    62     while (ans%2==0) ans/=2;
    63     cout<<ans;
    64     return 0;
    65 }
  • 相关阅读:
    Some interesting problems in Group theory
    Abstract Harmonic Analysis Lecture Notes
    郭懋正《实变函数与泛函分析》课后题答案
    江泽坚《泛函分析》第二版 参考答案
    国外著名数学杂志
    郑继明等《数值分析》习题解答
    《摩诃般若波罗蜜多心经》新译 何新 译
    炼静
    金刚经原文
    道德经全文
  • 原文地址:https://www.cnblogs.com/Dragon-Light/p/6582694.html
Copyright © 2011-2022 走看看