题解:不需要建树,深搜就可以了。把每次的总重递归回去再乘力矩,和另一边对比。

#include <stdio.h>

int flag;
int dfs() {
    int wl, dl, wr, dr;
    scanf("%d%d%d%d", &wl, &dl, &wr, &dr);
    if(wl == 0)
        wl = dfs();
    if(wr == 0)
        wr = dfs();
    if(wl * dl == wr * dr)
        return wl + wr;
    else {
         flag = 0;
         return 0;
    }

}
int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        flag = 1;
        dfs();
        if (flag == 1)
            printf("YES\n");
        else
            printf("NO\n");
        if (t)
            printf("\n");
    }
    return 0;
}