题解 | 食物链计数

食物链计数

https://www.nowcoder.com/practice/9844dd9f531e46e29f5749e8fcc4bd0b

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define debug(x) cerr << #x << ": " << x << '\n';
const int INF = 0x3f3f3f3f3f3f3f3f;
//倒序不要忘记是--不是++
void solve(){
    int n,m;cin>>n>>m;
    vector<vector<int>> e(n+1);
    vector<int> deg(n+1),chu(n+1);
    for(int i=1;i<=m;i++){
        int u,v;cin>>u>>v;
        e[u].push_back(v);
        deg[v]++;
        chu[u]++;
    }
    vector<int> dp(n+1);
    auto dfs=[&](auto dfs,int u)->int{
        if(dp[u]) return dp[u]; 
        if(e[u].size()==0){
            return dp[u]=1;
        }
        for(auto i:e[u]){
            dp[u]+=dfs(dfs,i);
        }
        return dp[u];
    };
    int ans=0;
    for(int i=1;i<=n;i++){
        if(!deg[i]&&!chu[i]) continue;
        if(!deg[i]){
            ans=(ans+dfs(dfs,i));
        }
    }
    cout<<ans;
}
signed main(){
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int t = 1;
    // cin>>t;
    while(t--){
        solve();
    }return 0;
}

全部评论

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务