zoukankan      html  css  js  c++  java
  • 树同构模板

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    typedef pair<ll,ll> pll;
    const int N=5e5+10;
    const int inf=0x3f3f3f3f;
    const int mod=1e9+7;
    int m,n;
    int h[105],ne[105],e[105],idx;
    ll f[105][105];
    int in[105];
    ll ans[105];
    int base=997;
    void add(int a,int b){
        e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    }
    void dfs(int u,int fa){
        ans[u]=1;
        int i;
        ll t[105];
        int id=0;
        for(i=h[u];i!=-1;i=ne[i]){
            int j=e[i];
            if(j==fa)
                continue;
            dfs(j,u);
            t[++id]=ans[j];
        }
        sort(t+1,t+1+id);
        for(i=1;i<=id;i++)
            ans[u]=(ans[u]*base+t[i])%mod;
    }
    int main(){
        ios::sync_with_stdio(false);
        cin>>m;
        int i;
        for(i=1;i<=m;i++){
            cin>>n;
            in[i]=n;
            for(int j=0;j<=n;j++)
                h[j]=-1;
            idx=0;
            for(int j=1;j<=n;j++){
                int x;
                cin>>x;
                if(x){
                    add(x,j);
                    add(j,x);
                }
            }
            for(int j=1;j<=n;j++){
                dfs(j,-1);
                f[i][j]=ans[j];
            }
            sort(f[i]+1,f[i]+1+n);
        }
        for(i=1;i<=m;i++){
            for(int j=1;j<=i;j++){
                if(in[i]==in[j]){
                    int k;
                    for(k=1;k<=in[i];k++){
                        if(f[i][k]!=f[j][k])
                            break;
                    }
                    if(k>in[i]){
                        cout<<j<<endl;
                        break;
                    }
                }
            }
        }
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    随机生成密码
    vue 仿新闻项目笔记
    vuex 随笔
    SourceTree
    vue npm,Git随笔
    谷歌浏览器如何去掉自动填充的背景色
    hold 命令
    ind2vec和vec2ind函数
    稀疏矩阵(sparse matrix)
    第五篇 学习OpenCV之视频处理
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13586782.html
Copyright © 2011-2022 走看看