有没有人帮我调一下bitset阿

heqixuan 2023-09-22 21:34:27 6 返回题目

思路bitset

#include<bits/stdc++.h>
#define int long long
using namespace std;
bitset<30010> arr[30010]; vector<int> vec[300010];
int in[300010], que[300100], tp, bk=1;
signed main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int n, m; cin >> n >> m; for(int i=1; i<=m; ++i) {
		int u, v; cin >> u >> v; vec[v].push_back(u); in[u]++;
	}
	for(int i=1; i<=n; ++i) {
		arr[i][i] = 1;
	}
	for(int i=1; i<=n; ++i) {
		if(in[i] == 0) que[++tp] = i;
	}
	while(bk <= tp) {
		int index = bk++; for(int i=0; i<vec[index].size(); ++i) {
			arr[vec[index][i]] |= arr[index]; --in[vec[index][i]];
			if(in[vec[index][i]] == 0) {
				que[++tp] = vec[index][i];
			}
		}
	}
	for(int i=1; i<=n; ++i) {
		cout << arr[i].count() << endl;
	}
	return 0;
}
{{ vote && vote.total.up }}