zoukankan      html  css  js  c++  java
  • Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined)

      A题,水题,判断所有点是不是入度和出度都相同即可。

      B题, 题意搞懂了就是水题。

      C题。一方分数mod k以后有余数,那么另外一方至少需要赢一场。根据这个方法判断即可。

      D题,构造题,不会= =。

      E题,题意是每次可以选一个节点,把儿子的两条相同长度的链合并成新的一条相同长度的链。问最后是否可以成为一条直链,如果可以输出最短的长度。见代码即可:

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <string.h>
     4 #include <set>
     5 #include <iostream>
     6 #include <vector>
     7 using namespace std;
     8 const int N = 2e5 + 5;
     9 
    10 int n,root;
    11 vector<int> G[N];
    12 int dfs(int u,int fa)
    13 {
    14     set<int> S;
    15     for(int i=0;i<G[u].size();i++)
    16     {
    17         int v = G[u][i];
    18         if(v == fa) continue;
    19         int t = dfs(v,u);
    20         if(t == -1) return -1;
    21         S.insert(t + 1);
    22     }
    23     if(S.size() == 0) return 0;
    24     if(S.size() == 1) return *S.begin();
    25     if(S.size() == 2 && fa == -1) return *S.begin() + *S.rbegin();
    26     root = u;
    27     return -1;
    28 }
    29 
    30 int main()
    31 {
    32     cin >> n;
    33     for(int i=1;i<n;i++)
    34     {
    35         int u,v; scanf("%d%d",&u,&v);
    36         G[u].push_back(v);
    37         G[v].push_back(u);
    38     }
    39     int ans = dfs(1,-1);
    40     if(ans == -1) ans = dfs(root,-1);
    41     if(ans == -1) return 0*puts("-1");
    42     while(ans % 2 == 0) ans >>= 1;
    43     printf("%d
    ",ans);
    44     return 0;
    45 }
    E
  • 相关阅读:
    RF04 Variables
    RF06 Settings
    RF05 Keywords
    Nginx介绍
    javascript中的迷惑点
    javascript中的undefined和null
    常见博客网站的robots.txt
    CSS层叠样式表
    web前端校验
    了解javascript
  • 原文地址:https://www.cnblogs.com/zzyDS/p/6413006.html
Copyright © 2011-2022 走看看