dfs 小甜点 uva839与699

#include<bits/stdc++.h>
using namespace std;
bool solve(int &W)
{
    int W1,W2,D1,D2;
    bool b1=1,b2=1;
    cin>>W1>>D1>>W2>>D2;
    if(!W1) b1=solve(W1);
    if(!W2) b2=solve(W2);
    W=W1+W2;
    return b1&&b2&&W1*D1==W2*D2;
}
int main()
{
    int kase,w;
    cin>>kase;
    while(kase--)
    {
        if(solve(w)) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
        if(kase) cout<<endl;
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
const int maxn= 10000;
int sum[maxn];
void buildtree(int mid)
{
    int inp;
    cin>>inp;
    if(inp!=-1) sum[mid]+=inp;
    else return;
    buildtree(mid-1);
    buildtree(mid+1);
}
bool init()
{
    memset(sum,0,sizeof(sum));
    int mid=maxn/2,inp;
    cin>>inp;
    if(inp==-1)return false;
    else sum[mid]=inp;
    buildtree(mid-1);
    buildtree(mid+1);
    return true;
}
int main()
{
    int kase=0;
    while(init())
    {
        cout<<"Case "<<++kase<<":"<<endl;
        bool first=0;
        for(int i=0;i<maxn;i++)
            if(sum[i]!=0) cout<<(first?" ":"")<<sum[i],first=1;
        cout<<endl<<endl;
    }
    return 0;
}


你可能感兴趣的:(dfs 小甜点 uva839与699)