记搜为何70
查看原帖
记搜为何70
1096184
DSB_123456楼主2025/6/22 15:15

rt,虽然已AC,但求原因,感谢各位大佬

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 5;

vector<int> g[N];
int n, m, ans = 0;
int in[N], f[N];

void dfs(int u, int num){
    if(f[u] != 0){
        ans += f[u];
        return ;
    }
	bool tmp = 1;
	for(auto i : g[u]){
		dfs(i, num + 1);
        f[u] += f[i];
		tmp = 0;
	}
	if(tmp && num > 0)
		ans++;
}

signed main(){
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
//	freopen("in.txt", "r", stdin);
	cin >> n >> m;
	for(int i = 1, x, y; i <= m; i++){
		cin >> x >> y;
		g[x].push_back(y);
		in[y]++;
	}
	for(int i = 1; i <= n; i++){
		if(in[i] == 0)
			dfs(i, 0);
	}
	cout << ans;
	
	fflush(stdout);
	return 0;
} 
2025/6/22 15:15
加载中...