hdu 6016
Posted 发牌员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6016相关的知识,希望对你有一定的参考价值。
比赛用并查集怼了半天,发现没办法找到4个不同的数,没做出来,刚刚看了题解,就是个脑洞题。。。。。。炸了,还有,估计以后只能做uva了
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int maxn=100000+10; int a[maxn],b[maxn]; struct note { int x,y; }tt[maxn]; int t,m,n,p; int main() { scanf("%d",&t); while(t--) { scanf("%d%d%d",&m,&n,&p); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=0;i<p;i++) { scanf("%d%d",&tt[i].x,&tt[i].y); a[tt[i].x]++; b[tt[i].y]++; } long long int ans=0; for(int i=0;i<p;i++) ans+=(long long)(a[tt[i].x]-1)*(b[tt[i].y]-1);//出现次数减去这次的连接次数,也就是1,男女都减,这是最神奇的地方 printf("%lld\n",ans*2); } return 0; }
以上是关于hdu 6016的主要内容,如果未能解决你的问题,请参考以下文章
HDU4057 Rescue the Rabbit(AC自动机+状压DP)
HDU3247 Resource Archiver(AC自动机+BFS+DP)