当前位置:网站首页>AcWing164. 可达性统计(拓扑排序+bitset)
AcWing164. 可达性统计(拓扑排序+bitset)
2022-07-05 00:02:00 【eva_can(not)survive】
164. 可达性统计 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/166/第一次用到bitset真是一个神奇的容器啊,让我们计算子集非常方便。
这个题也直接给出了是有个DAG所以我们可以直接求拓扑序列,然后倒序遍历将其每个点能触及到的状态记录。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
#include <bitset>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
#define lowbit(x) ((x)&(-x))
using P = pair<int, int>;
int ver[MAXN];
int head[MAXN];
int nxt[MAXN];
int cnt;
int in[MAXN];
int tuop[MAXN];
int cnt1;
void add(int x, int y) {
ver[++cnt] = y;
nxt[cnt] = head[x];
head[x] = cnt;
in[y]++;
}
int n, m;
const int N = 3e4 + 5;
bitset<N> rec[N];
void topsort() {
queue<int> q;
map<int, int> mp;
for (int i = 1; i <= n; i++) {
if (in[i])
continue;
q.push(i);
}
while (!q.empty()) {
int t = q.front();
q.pop();
tuop[++cnt1] = t;
for (int i = head[t]; i; i = nxt[i]) {
int v = ver[i];
in[v]--;
if (!in[v])
q.push(v);
}
}
}
int main() {
scanf("%d %d", &n, &m);
int x, y;
for (int i = 1; i <= m; i++) {
scanf("%d %d", &x, &y);
add(x, y);
}
topsort();
for (int i = n; i >= 1; i--) {
int j = tuop[i];
rec[j][j] = 1;
for (int k = head[j]; k; k = nxt[k]) {
int v = ver[k];
rec[j] |= rec[v];
}
}
for (int i = 1; i <= n; i++) {
printf("%d\n", rec[i].count());
}
return 0;
}
边栏推荐
- PermissionError: [Errno 13] Permission denied: ‘data. csv‘
- Instructions for go defer
- 业务场景功能的继续修改
- Business implementation - the log is written to the same row of data
- A new method for analyzing the trend chart of London Silver
- 企业应用业务场景,功能添加和修改C#源码
- 如何用快解析自制IoT云平台
- 他做国外LEAD,用了一年时间,把所有房贷都还清了
- js正则表达式之中文验证(转)
- 人脸识别5- insight-face-paddle-代码实战笔记
猜你喜欢
【雅思阅读】王希伟阅读P4(matching1)
如何报考PMP项目管理认证考试?
He worked as a foreign lead and paid off all the housing loans in a year
取得PMP證書需要多長時間?
"Xiaodeng" domain password policy enhancer in operation and maintenance
Using fast parsing intranet penetration to realize zero cost self built website
QT addition calculator (simple case)
45岁教授,她投出2个超级独角兽
企业公司项目开发好一部分基础功能,重要的事保存到线上第一a
French scholars: the explicability of counter attack under optimal transmission theory
随机推荐
企业应用业务场景,功能添加和修改C#源码
[paper reading] Tun det: a novel network for meridian ultra sound nodule detection
How to effectively monitor the DC column head cabinet
如何用快解析自制IoT云平台
他做国外LEAD,用了一年时间,把所有房贷都还清了
挖财学院开户安全的吗?开户怎么开?
Summary of week 22-07-02
JS how to realize array to tree
Hologres Query管理及超时处理
[monitoring] ZABBIX
The pit of sizeof operator in C language
Is it safe to open an account in the College of Finance and economics? How to open an account?
Introduction to ACM combination counting
IELTS examination process, what to pay attention to and how to review?
用快解析内网穿透实现零成本自建网站
快解析内网穿透帮助企业快速实现协同办公
Netcore3.1 JSON web token Middleware
C语言中sizeof操作符的坑
Intelligence test to see idioms guess ancient poems wechat applet source code
股票账户佣金怎么调低,炒股佣金怎么调低网上开户安全吗