zoukankan      html  css  js  c++  java
  • 对称变量 双哈希

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=5e5+100;
    
    ll mod1=1238532465;
    ll mod2=2309412751;
    ll mod=1e9+7;
    map<pair<ll,ll>,int>mp;
    int u[N],v[N],vis[N];
    ll h1[N],h2[N];
    ll m1[N],m2[N];
    int main() {
        int cas;cin>>cas;
        m1[0]=m2[0]=1;
        for(int i=1;i<=N-10;i++) {
            m1[i]=m1[i-1]*1235463%mod1;
            m2[i]=m2[i-1]*1030007%mod2;
        }
        while(cas--) {
            int n,m;
            cin>>n>>m;
            mp.clear();
            for(int i=1;i<=n;i++) vis[i]=0,h1[i]=h2[i]=0;
            for(int i=1;i<=m;i++) {
                scanf("%d%d",&u[i],&v[i]);
                if(u[i]==v[i]) {
                    vis[u[i]]=1;
                    continue;
                }
                h1[u[i]]=(h1[u[i]]+m1[v[i]])%mod1;
                h2[u[i]]=(h2[u[i]]+m2[v[i]])%mod2;
                h1[v[i]]=(h1[v[i]]+m1[u[i]])%mod1;
                h2[v[i]]=(h2[v[i]]+m2[u[i]])%mod2;
            }
    
            ll ans=0;
            for(int i=1;i<=n;i++) if(!vis[i]) {
                ans+= mp[{h1[i],h2[i]}] ;
                mp[{h1[i],h2[i]}]++;
            }
            mp.clear();
            for(int i=1;i<=n;i++) if(vis[i]) {
                ans+= mp[{h1[i],h2[i]}] ;
                mp[{h1[i],h2[i]}]++;
            }
            ll a1,a2,b1,b2;
            for(int i=1;i<=m;i++) if(!vis[u[i]]&&!vis[v[i]]||vis[u[i]]&&vis[v[i]]) {
                if(u[i==v[i]) continue;
                a1=(h1[v[i]]-m1[u[i]]+mod1)%mod1;
                b1=(h2[v[i]]-m2[u[i]]+mod2)%mod2;
                a2=(h1[u[i]]-m1[v[i]]+mod1)%mod1;
                b2=(h2[u[i]]-m2[v[i]]+mod2)%mod2;
                if(a1==a2&&b1==b2) ans++;
            }
            cout<<ans<<endl;
        }
    }
    View Code
  • 相关阅读:
    Zabbix Server 和 Zabbix Agentd 开机自动运行
    nginx+keepalive实现高可用负载均衡
    zabbix添加对web页面url的状态监控
    Zabbix当内存剩余不足10%的时候触发报警
    zabbix cpu监控介绍
    bash小结
    数据库知识入门
    MySQL简单管理
    python环境
    paramiko实现putty功能
  • 原文地址:https://www.cnblogs.com/bxd123/p/12208459.html
Copyright © 2011-2022 走看看