Aizu

来源:互联网 发布:1.5斤麒麟鞭弹簧垫数据 编辑:程序博客网 时间:2024/05/18 01:37

题目->here
原文链接here
这里写图片描述
我炒的代码:

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<map>using namespace std;typedef long long ll;const int N = 1000005,p = 9901,MOD = 1e9+7;vector<ll> G[N];ll Hash[N];map<ll,ll> m;map<ll,ll>::iterator it;void dfs(ll u){    Hash[u] = 1;    for(int i = 0;i < G[u].size();i++)    {        ll v = G[u][i];        dfs(v);        Hash[u] = (Hash[u]+Hash[v]*p)%MOD;    }    m[Hash[u]]++;}int main(){    int n,u,v;    cin >> n;    for(int i = 1;i <= n-1;i++)    {        scanf("%d%d",&u,&v);        G[u].push_back(v);    }    dfs(1);    ll ans = 0;    for(it = m.begin();it != m.end();it++)        ans += it->second*(it->second-1)/2;    printf("%lld\n",ans);    return 0;}
0 0