权限题

就是一个集合\(hash\)

集合\(hash\)可以用于判断两个集合是否相等,具体做法就是给每个随机一个值,之后异或起来就是可以了

这个题就是这样,处理出每个点直接相连的点集的\(hash\)值,之后判断一下有多少对\(hash\)值相等就好了

在考虑一下每条边就做完了

代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<ctime>
#include<map>
#define maxn 1000005
#define re register
#define LL unsigned long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read() {
int x=0;char c=getchar();while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
int u[maxn],v[maxn];
int n,m;
LL a[maxn],s[maxn];
std::map<LL,int> ma;
int main()
{
n=read(),m=read();
srand(time(0));
for(re int i=1;i<=n;i++) a[i]=((LL)(((LL)rand()<<15ll)*((LL)rand()<<12ll))^(LL)rand());
for(re int i=1;i<=m;i++) u[i]=read(),v[i]=read(),s[u[i]]^=a[v[i]],s[v[i]]^=a[u[i]];
LL ans=0;
for(re int i=1;i<=n;i++) ans+=ma[s[i]],ma[s[i]]++;
for(re int i=1;i<=m;i++) if((s[u[i]]^a[v[i]])==(s[v[i]]^a[u[i]])) ans++;
printf("%lld\n",ans);
return 0;
}

「bzoj4264 小C找朋友」的更多相关文章

  1. bzoj4264: 小C找朋友

    hash大法好 #include <iostream> #include <cstdio> #include <cstring> #include <cmat ...

  2. 【BZOJ4264】小C找朋友 随机化

    [BZOJ4264]小C找朋友 Description 幼儿园里有N个小C,两个小C之间可能是朋友也可能不是.所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边. 园长ATM发现对于两个(不 ...

  3. 刷题总结——小c找朋友(bzoj4264 集合hash)

    题目: Description 幼儿园里有N个小C,两个小C之间可能是朋友也可能不是.所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边. 园长ATM发现对于两个(不同的)小Ci和j,如果其 ...

  4. 【bzoj4264】小C找朋友

    题解 $a$和$b$是好*友说明除了这两个人以外的邻接集合相同: 做两次$hash$,分别都处理和$a$相邻的点排序$hash$,①$a$要算进$a$的相邻集合,②$a$不算进: 当两个人不是好*友, ...

  5. BZOJ 4264 小C找朋友 哈希+脑子

    好吧我觉得是脑子,别人觉得是套路$qwq$ 这道题相当于是求除了$u,v$两点互相连接,所连的点相同的点对$(u,v)$ 我们首先每个点一个随机权值,对于$u$点记为$w[u]$,然后记与$u$点相连 ...

  6. BZOJ 4264 小c找朋友 - hash

    传送门 题目大意: 给定一张无向图,求满足以下条件的点对 (x,y) 数目:对任意点 z (z!=x,y),边 (x,z) 和 (y,z) 同时存在或同时不存在. 题目分析: 首先要分析的出如果xy满 ...

  7. 「小程序JAVA实战」微信小程序简介(一)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...

  8. 「微信小程序」有哪些冲击与机会?

    昨天晚上相信大家的朋友圈被「微信小程序」刷屏了,这影响力赶上了国务院出台新政策一样,足以说明微信在中国的影响力之大. 然后今天公号后台一大堆人问我怎么看这件事,不少人非常忧虑,仿佛自己将要失业一样. ...

  9. 「前端开发者」如何把握住「微信小程序」这波红利?

    由于前两周一直在老家处理重要事情,虽然朋友圈被「微信小程序」刷爆了,但并没有时间深入了解. 昨天回广州之后,第一件事情就是把「微信小程序」相关的文章.开发文档.设计规范全部看了一遍,基本上明白了「微信 ...

随机推荐

  1. 02.ToString()方法详解

    ToString()使用方法汇总(C#) C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 ...

  2. oracle OCI lob操作

    可以有两种方式来bind lob字段 1)直接绑定lob 值 2)绑定lob locator指针 对于 直接绑定lob值的操作如下 char* sql = "insert into tab_ ...

  3. python之from 和import执行过程分析

    原文链接:http://blog.csdn.net/lis_12/article/details/52883729 问题1 同一个目录下,有两个Python文件,A.py,B.py #A.py fro ...

  4. Maven pom.xml 常用打包配置

    <build> <!-- 指定JAVA源文件目录 --> <sourceDirectory>src</sourceDirectory> <!-- ...

  5. javascript闭包中循环问题

    如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5. <html > <head> <meta http-equiv=&quo ...

  6. 汉诺塔matlab实现

    Matlab的递归调用,好久不用matlab了,练练手.   global handCount; handCount = 1; huuotsun(1, 2, 3, 3)     function hu ...

  7. Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)

    Python爬虫教程-12-爬虫使用cookie(上) 爬虫关于cookie和session,由于http协议无记忆性,比如说登录淘宝网站的浏览记录,下次打开是不能直接记忆下来的,后来就有了cooki ...

  8. Distributed TensorFlow

    Distributed TensorFlow Todo list: Distributed TensorFlow简介 Distributed TensorFlow的部署与运行 对3个台主机做多卡GPU ...

  9. ES6入门——let和const命令

    let和const命令 1.let命令 用法:类似于var,用来声明一个变量,区别是所声明的变量只在let命令所在的代码块内有效. let命令很适合用在for循环的计数器中,因为let声明的变量仅在作 ...

  10. redis在linux设置密码

    redis默认是没有密码的,如果需要设置可以这样设置. 1.找到本机的/etc/redis.conf 文件,找到如下行 #requirepass foobared 去掉前面的密码,并自己设置密码 re ...