求大佬帮忙看看这个怎么搞
查看原帖
求大佬帮忙看看这个怎么搞
1052827
xiaobei10楼主2024/11/23 23:54
#include<bits/stdc++.h>
using namespace std;
const int N = 200000 + 5;
vector<int>V[N];
int dandu[N], f[N];
int ans = 0;

int bfs(int x) {
    if(f[x]) return f[x];
    int num = 0;
    if (V[x].empty())  return 1;

        for (int i = 1; i <= V[x].size(); i++) {
            int q = V[x].back();
            V[x].pop_back();
            num += bfs(q);
        }
        f[x] = num;
        return num;
   
}

int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= m; i++) {
        int a, b;
        cin >> a >> b;
        V[a].push_back(b);
        dandu[a] = 1;
        dandu[b] = 1;
    }
    for (int i = 1; i <= n; i++) {
       if (dandu[i]){
             ans += bfs(i);
       }
    }
    cout << ans;
    return 0;
}
2024/11/23 23:54
加载中...