【bzoj4337】【Bjoi2015】樹的同構
阿新 • • 發佈:2019-01-08
-
題解
- 無標號樹的HASH:
- 找到樹的重心,以重心為根求出括號序列;
- 由於樹的重心最多隻有兩個,取字典序的最小括號序列HASH即可
- 樹的括號序列$s_{u}="(s_{v_{1}},s_{v_{2}},s_{v_{3}},...,s_{v_{n}})"$,同時字典序$s_{v_{1}} <= s_{v_{2}} <= ,... $
- 有標號樹的HASH:
- 個人認為可以直接$prufer$序列$HASH$
- 或者直接將兒子排個序$hash$,(總之亂搞)
-
1 #include<bits/stdc++.h> 2 #define ll long long 3 #define mod 998244353 4 using namespace std; 5 const int N=51; 6 int n,m,hd[N],o,sz[N],mx[N],Mx,tot; 7 struct Edge{int v,nt;}E[N<<1]; 8 map<int,int>h; 9 string now,s[N],tmp[N]; 10 void adde(int u,int v){
bzoj4337
- 無標號樹的HASH: