这道题是一道简单题意模拟题。
说实话,其实我个人认为这道题看成二叉树更好一点,这样就可以按照类似于二叉树的方式就可以了。
对于一个点而言,如果其有左右儿子天平,那么递归计算,否则就返回即可。
需要注意的是,要特别注意没有左右子树的判定,因为这是个坑。
代码:
#include<bits/stdc++.h>
using namespace std;
bool get(int &x)
{
int wl,dl,wr,dr;
scanf("%d %d %d %d",&wl,&dl,&wr,&dr);
bool book1=1,book2=1;
if(!wl) book1=get(wl);
if(!wr) book2=get(wr);
x=wl+wr;
return book1&&book2&&(wl*dl==wr*dr);
}
int main()
{
int t,w=0;
scanf("%d",&t);
while(t--)
{
if(get(w)) printf("YES\n");
else printf("NO\n");
if(t) printf("\n");
}
}