zoukankan      html  css  js  c++  java
  • CF #660 C

    #include<iostream>
    #include<vector>
    using namespace std;
    #define MAX 10005
    #define REP(i,b,e) for(int i=b;i<e;i++)
    vector<int>b[MAX];
    int a[MAX], p[MAX], h[MAX], g[MAX];
    bool flag = true;
    
    void dfs(int v, int ancestor = -1) {
        a[v] = p[v];//a=总人口
        int sum = 0,to,i;
        REP(i,0,b[v].size()){
            to = b[v][i];
            if (to == ancestor)
                continue;
            dfs(to, v);
            a[v] += a[to];
            sum += g[to];
        }
        g[v] = (a[v] + h[v]) / 2;
        if ((a[v] + h[v]) % 2 != 0)//无法分配
            flag = false;
        if (g[v] < 0 || g[v] > a[v])//指数过小或过大
            flag = false;
        if (sum > g[v])//后续超出前段的
            flag = false;
    }
    
    
    int main() {
        int t;
        cin >> t;
        while (t--) {
            int n,m;cin>>n>>m;
            
            REP(i,0,n)
                cin >> p[i+1];
            REP(i,0,n)
                cin >> h[i+1];
            REP(i,1,n){
                int a1, b1;
                cin >> a1 >> b1;
                b[a1].push_back(b1);
                b[b1].push_back(a1);
            }
            dfs(1);
            if (flag)
                cout << "YES" << endl;
            else
                cout << "NO" << endl;
            flag = true;
            for (int i = 1; i <= n; ++i)
                b[i].clear();
        }
        return 0;
    }

    https://vjudge.net/contest/387172#problem/C

  • 相关阅读:
    1、如何使用Azure Rest API创建虚拟机
    Ansible---2的Roles使用
    linux下的shell脚本
    生成器 yield和协程
    xshell
    markdown的使用
    加密
    Hbuilder打包app
    尾递归
    jupyter
  • 原文地址:https://www.cnblogs.com/forwhat00/p/13448781.html
Copyright © 2011-2022 走看看