uva839

题目描述:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19486

//二叉树的dfs
#include <iostream>
#include <cstdio>

using namespace std;

int weight(int &w) {
    int d1, w1, d2, w2;
    cin >> w1 >> d1 >> w2 >> d2;
    bool b1 = true, b2 = true;      //注意一定要初始化为true,因为叶子节点的关系
    if(!w1)     b1 = weight(w1);    //注意此处用了引用传值,当w为0时才进行递归调用,直到天平的根节点
    if(!w2)     b2 = weight(w2);

    w = w1 + w2;
    return b1 && b2 && (w1 * d1 == w2 * d2);
}

int main()
{
    int T,w;
    scanf("%d", &T);
    getchar();

    while(T--) {
        if(weight(w))   printf("YES\n");
        else                 printf("NO\n");
        if(T)   printf("\n");
    }
    return 0;
}

你可能感兴趣的:(uva839)