题意:给定nnn个点mmm张图的有向图,有1∼m1\sim m1∼m互不相同每个点出度不超过kkk。对于一个 kkk元组cic_ici​,图中的每个点uuu只保留第cdeguc_{deg_u}cdegu​​小的边。求有多少种ccc使得在保留下来的图中每个点沿着出边一直往下走可以走回自己。

n,m≤2×105,k≤9n,m\leq 2\times 10^5,k\leq 9n,m≤2×105,k≤9

显然直接k!k!k!暴力枚举方案,问题在于如何快速判断。

不难看出题中的条件等价于每个点入度恰好为111

也相当于每条边的终点恰好遍历1∼n1 \sim n1∼n

写个哈希就完了

复杂度O(n+k!)O(n+k!)O(n+k!)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <vector>
#include <utility>
#include <cstdlib>
#include <ctime>
#define MAXN 200005
using namespace std;
int u[MAXN],v[MAXN],n,m,k;
typedef pair<int,int> pi;
vector<int> e[MAXN];
vector<pi> lis[MAXN];
inline int id(const pi& p){return p.first*(p.first-1)/2+p.second;}
int ans[10],key[MAXN],val[10][10],rt,cnt;
void check()
{int t=0;for (int i=1;i<=k;i++) t+=val[i][ans[i]];if (t==rt) ++cnt;
}
void dfs(int i)
{if (i>k) return check();for (ans[i]=1;ans[i]<=i;ans[i]++) dfs(i+1);
}
int main()
{scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=n;i++) rt+=(key[i]=rand());for (int i=1;i<=m;i++){int x,y,w;scanf("%d%d%d",&x,&y,&w);u[w]=x,v[w]=y;}for (int i=1;i<=m;i++)  e[u[i]].push_back(v[i]);for (int u=1;u<=n;u++)for (int i=0;i<(int)e[u].size();i++)val[e[u].size()][i+1]+=key[e[u][i]];dfs(1);cout<<cnt;return 0;
}

【CF1394B】Boboniu Walks on Graph【图论】【集合哈希】相关推荐

  1. AtCoder AGC043C Giant Graph (图论、SG函数、FWT)

    题目链接 https://atcoder.jp/contests/agc043/tasks/agc043_c 题解 场上感觉没啥思路就放弃了,场下想了十几分钟发现是水题,血亏...(只能怪自己计数水平 ...

  2. AtCoder AGC031F Walk on Graph (图论、数论)

    题目链接 https://atcoder.jp/contests/agc031/tasks/agc031_f 题解 这题真是太神仙了-- 首先我们转化一下问题,倒着来做,一开始有一个数\(0\), 每 ...

  3. Java集合—哈希(hash)表

    原文作者: 原文地址: 1.哈希表的定义 这里先说一下哈希(hash)表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我 ...

  4. HDU题目分类大全【大集合】

    基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.  1032.1037.1040.1048.1056.105 ...

  5. Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)

    Graph Convolutional Neural Networks for Web-Scale Recommender Systems 用于Web级推荐系统的图形卷积神经网络 ABSTRACT R ...

  6. NetworkX系列教程(1)-创建graph

    小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...

  7. NetworkX系列教程(2)-graph生成器

    小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...

  8. Graph Neural Network(GraphSAGE,GAT)

    Graph 图论问题.如生成树算法,最短路径算法,BFS,DFS. 概率图模型.将条件概率表达为图结构,如马尔可夫链,条件随机场. 图神经网络.结合深度学习,如博主已经整理过的Graph Embedd ...

  9. 图论——networkx——最短路径算法篇

    NetworkX系列教程(10)-算法之一:最短路径问题 小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的 ...

最新文章

  1. Linux内核网络栈1.2.13-tcp.c概述
  2. ICLR 2022 || 通过邻域/度/初始特征重建的等图自编码器
  3. oracle里的ols机制,Oracle ASM的AU(Allocation units)分配
  4. 裁剪图像周围空白区域_零基础PS纠正倾斜的图像效果
  5. 152. 城市游戏【单调栈】
  6. 7.5 obtaining database metadata
  7. 【HTML+CSS网页设计与布局 从入门到精通】第12章-CSS
  8. 泛化性的危机!LeCun发文质疑:测试集和训练集永远没关系...
  9. 数据库的基础知识总结
  10. 七天学完Vue之第二天学习笔记(自定指令,过滤器,生命周期函数,动画效果)
  11. 五分钟学会PowerDesigner创建概念数据模型
  12. 使用功能点估算模型评估软件测试的工作量
  13. 教你炒股票29:转折的力度与级别
  14. 二值图像分析:OpenCV中的二值化阈值操作
  15. 黄鱼车今后会少 下沙公交小巴向出租车转型
  16. linux服务器下如何显示中文的图片,Linux服务器中文显示问题
  17. 7-5 字符串对称 (10 分)
  18. 高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题
  19. 红外成像单筒望远镜TFN TD7产品 型号评测
  20. 数据库关系代数中除运算讲解和SQL语句的实现

热门文章

  1. java 数组拼接_打印Java数组最优雅的方式是什么?这波操作闪瞎我
  2. 软件项目管理课后题下载【共5个章(1、3、4、5、6)】
  3. 遇到可爱女生如何搭讪?
  4. 为什么女生会有体香?
  5. 一个孩子能长大成人到底有多不容易? | 今日最佳
  6. 数学特级老师:数学除了做习题,这份140G的资料一定要收藏!
  7. 最全知识点总结!| 大数据学习路线指南
  8. js 定时网页点击_反爬 JS 逆向,扣代码解密分析
  9. pca 累积方差贡献率公式_机器学习数据降维方法:PCA主成分分析
  10. 计算机硬件相关名词,计算机硬件基础名词解释