当前位置:网站首页>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;
}
边栏推荐
- Life is changeable, and the large intestine covers the small intestine. This time, I can really go home to see my daughter-in-law...
- Hong Kong Jewelry tycoon, 2.2 billion "bargain hunting" Giordano
- Hash table, hash function, bloom filter, consistency hash
- PMP certificate renewal process
- Microservice
- PermissionError: [Errno 13] Permission denied: ‘data. csv‘
- Continuous modification of business scenario functions
- 如何有效对直流列头柜进行监测
- QT addition calculator (simple case)
- IELTS examination process, what to pay attention to and how to review?
猜你喜欢

Specification for fs4061a boost 8.4v charging IC chip and fs4061b boost 12.6V charging IC chip datasheet

French scholars: the explicability of counter attack under optimal transmission theory

微服务(Microservice)那点事儿

Réseau graphique: Qu'est - ce que le Protocole d'équilibrage de charge de passerelle glbp?

取得PMP證書需要多長時間?

香港珠宝大亨,22亿“抄底”佐丹奴

同事的接口文档我每次看着就头大,毛病多多。。。

What is the difference between port mapping and port forwarding

Fs8b711s14 electric wine bottle opener MCU IC scheme development special integrated IC

ECCV 2022 | Tencent Youtu proposed disco: the effect of saving small models in self supervised learning
随机推荐
[paper reading] Tun det: a novel network for meridian ultra sound nodule detection
Is it safe to open an account in the College of Finance and economics? How to open an account?
机器人强化学习——Learning Synergies between Pushing and Grasping with Self-supervised DRL (2018)
【路径规划】RRT增加动力模型进行轨迹规划
Font design symbol combination multifunctional wechat applet source code
Summary of week 22-07-02
业务场景功能的继续修改
French scholars: the explicability of counter attack under optimal transmission theory
如何避免电弧产生?—— AAFD故障电弧探测器为您解决
Combien de temps faut - il pour obtenir un certificat PMP?
公司要上监控,Zabbix 和 Prometheus 怎么选?这么选准没错!
XML的解析
Tester's algorithm interview question - find mode
Build your own minecraft server with fast parsing
Fs8b711s14 electric wine bottle opener MCU IC scheme development special integrated IC
js如何实现数组转树
[kotlin] the third day
JS convert pseudo array to array
The company needs to be monitored. How do ZABBIX and Prometheus choose? That's the right choice!
Solution record of jamming when using CAD to move bricks in high configuration notebook