您的位置:首页 > 其它

Similarity of Subtrees(深搜+hash、映射)

2017-08-13 15:04 302 查看
https://vjudge.net/problem/Aizu-2784

http://www.cnblogs.com/chen9510/p/5929542.html

hash方法,因为每一个一样的node都可以变为一个同样大小的多项式的。。。

map<ULL,LL>mp;
vector<int>g
;
ULL dp
;
LL ans;int n;
const ULL b=1000000007;
void dfs(int u,int fa){
dp[u]=1;
for(int i=0;i<g[u].size();++i){
int v=g[u][i];
if(v==fa)continue;
dfs(v,u);
dp[u]+=dp[v]*b;
}
ans+=mp[dp[u]];
mp[dp[u]]++;
}
int main(){
sf("%d",&n);
ans=0;
rep(i,1,n-1){
int u,v;sf("%d%d",&u,&v);
g[u].push_back(v);g[v].push_back(u);
}
dfs(1,1);
cout<<ans<<'\n';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hash