hdu 6016 Count the Sheep(思维)
2024-09-01 06:16:36
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6016
题意:给定男羊和女羊的朋友关系,即给定一个图,问从任意一只羊开始连续数四只不相同的羊的方法数。
这题挺简单的就是需要动一下脑子,我们只要找到关系A-B-C-D即可,且关系址建立在男女羊之间。
就是说我们只要找到 男羊-女羊-男羊-女羊,或者 女羊-男羊-女羊-男羊 即可。
于是那只要找到任意一种方式的总数然后乘2即可。
拿后一种关系为例。
ans[i]表示i号女羊有几个男羊朋友vc[i]存储与i号男羊有关系的女羊。
for(int i = 1 ; i <= n ; i++) {
int count = vc[i].size() - 1;
for(int j = 0 ; j <= count ; j++) {
sum += ((ans[vc[i][j]] - 1) * count);
}
}
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
using namespace std;
typedef long long ll;
const int M = 1e5 + 10;
vector<int>vc[M];
int ans[M];
int main() {
int t;
scanf("%d" , &t);
while(t--) {
int n , m , k;
scanf("%d%d%d" , &n , &m , &k);
for(int i = 1 ; i <= n ; i++) {
vc[i].clear();
}
for(int i = 1 ; i <= m ; i++) {
ans[i] = 0;
}
while(k--) {
int a , b;
scanf("%d%d" , &a , &b);
ans[b]++;
vc[a].push_back(b);
}
ll sum = 0;
for(int i = 1 ; i <= n ; i++) {
int count = vc[i].size() - 1;
for(int j = 0 ; j <= count ; j++) {
sum += (ll)((ans[vc[i][j]] - 1) * count);
}
}
printf("%lld\n" , sum * 2);
}
return 0;
}
最新文章
- SQLite.Net-PCLUSING SQLITE IN WINDOWS 10 UNIVERSAL APPS
- IOS开发基础知识--碎片45
- Java多线程系列--“JUC原子类”04之 AtomicReference原子类
- C#程序
- Asp.Net Web API 2第八课——Web API 2中的属性路由
- NopCommerce适应多数据库方案
- 使用C#发送正文带图片邮件
- URAL 1158 AC自动机上的简单DP+大数
- HDU 3127 WHUgirls【二维完全背包】
- iframe 刷新
- CSS FIXED porn javhd
- iOS 面试题 3
- 场景2 nginx 错误日志格式:
- linux 学习:环境变量设置
- HBuilder连接IOS手机打开APP测试
- 策略模式(Stratety)
- 第3章 结束会话端点(EndSession Point) - IdentityModel 中文文档(v1.0.0)
- 史诗级Java资源大全中文版
- 了解一下RabbitMQ
- [转]Windows下安装storm-0.9.1