250  想想就发现规律了。

500  暴力,括号匹配。

1000

给一个f数组,如果i存在,那么f[i]也得存在,问这样的集合有多少种。

先拓扑一下,dp[i] = mul(dp[son]+1)最后环里面的元素的乘积是结果。

#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <cmath>
#include <queue>
#include <set>
#include <stack>
using namespace std;
#define LL long long
int p[][],o[],flag[],nt[];
LL dp[];
LL temp;
void dfs(int x)
{
flag[x] = ;
temp *= dp[x];
if(flag[nt[x]] == )
return ;
flag[nt[x]] = ;
dfs(nt[x]);
}
class InvariantSets
{
public :
LL countSets(vector <int> f)
{
int i,j,n,z;
LL ans = ;
n = f.size();
for(i = ;i < n;i ++)
{
p[i][f[i]] = ;
dp[i] = ;
nt[i] = f[i];
o[f[i]] ++;
}
for(;;)
{
z = ;
for(i = ;i < n;i ++)
{
if(o[i] == &&!flag[i])
{
flag[i] = ;
z = ;
for(j = ;j < n;j ++)
{
if(p[i][j] == &&!flag[j])
{
dp[j] *= (dp[i] + );
o[j] --;
}
}
}
}
if(!z) break;
}
for(i = ;i < n;i ++)
{
temp = ;
if(flag[i] == )
{
dfs(i);
ans *= (temp+);
}
}
return ans;
}
};

最新文章

  1. [Java入门笔记] Java语言基础(二):常量、变量与数据类型
  2. 你真的了解UIWindow吗?
  3. hdu 2048 神、上帝以及老天爷(错排)
  4. BZOJ 1406 密码箱
  5. Android DiffUtil
  6. 再学习sqlhelper
  7. 各开放平台API接口通用 SDK 前言
  8. 进程管理工具htop/glances/dstat的使用
  9. 白话讲述Java中volatile关键字
  10. vue 使用踩坑 note
  11. Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合
  12. [Swift]LeetCode834. 树中距离之和 | Sum of Distances in Tree
  13. IdentityServer4 密码模式认证
  14. Rime输入法的配色方案
  15. python变量名感悟
  16. Spring Cloud Config 服务端与 客户端之间的关系
  17. html自适应布局,@media screen,媒体查询
  18. c++ 模板 不能 分离编译
  19. DBUtils使用BeanListHandler及BeanHandler时返回null
  20. Linq中DeferredLoadingEnabled,DataLoadOption的用法

热门文章

  1. 初识java泛型
  2. 自动布局报错(两条连线冲突):Unable to simultaneously satisfy constraints
  3. python拆分CANLog
  4. 转:IOC框架
  5. 久违的phpstorm
  6. Oracle 在线重定义表分区
  7. CC2540自己的配置文件
  8. jquery 替换img 属性
  9. JavaScript常用字符串操作方法总结
  10. 关于java中多态的理解