原題:who killed cock robin
題意:
給出一顆無根樹,問有多少種子圖(包括點)
解析:
既然無根樹,那麼就隨便選擇乙個點為rt,就1好了
用x[i]表示以i點為父親得到的圖的可能性
對於每個點i,兒子數為0時,x[i]為0,有n個兒子時,對於每個兒子j所能產生的可能性為x[j]+1,而x[i]為隨便選任意個兒子相乘之和
eg:有三個兒子可能性為2 3 4,可能得到的就是3 4 5
那麼x[i]=3+4+5+3*4+4*5+3*5+3*4*5
任意乘有個公式:dp[i]=dp[i-1]*x[i]+x[i] (dp[i]為前i個數的任意乘)
因為3和4有3,4,3*4,加入5多了5,3*5,4*5,3*4*5,多了的部分就是5*前面部分加乙個5
另外,x[兒子]和x[父親]都要加到ans裡面,因為以父親為root的那部分是從父親開始往下延的,而x[兒子]是以兒子為root的
**:
#define n 100009
int n;
vector
v[2*n];
d ans=0;
d fin(int ar,int fa)
d ans=0;
while(!q.empty())
ans=(ans+ans)%mod;
return ans;
}int main()
fin(1,0);
printf("%lld\n",ans);
}
另一棵樹的子樹
給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹擁有相同的...
如何判斷一棵樹是不是另一棵樹的子樹
package suanfatest class treenode treenode int value treenode int value,treenode leftchild,treenode rightchild public int getvalue public void setvalu...
leetcode 另一棵樹的子樹
題目描述 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹 s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。測試用例 給定的樹 s 給定的樹 t 返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。思路 若...