题解 | #相遇#

相遇

https://www.nowcoder.com/practice/5dc1ccabaa0442d8b83f00ec74b225fa

拓扑排序原理

#include <bits/stdc++.h>
using namespace std;


const int mod =  100007;
int main()
{
    
    int n,m,t;
    cin>>n>>m>>t;
    unordered_map<int,vector<int> >mp ;
    vector<int> ind(n+1); 
    // vector<int> dfn(n+1); 
    // vector<int> mdfn(n+1); 
    for(int i=0;i<m;i++) {

        int u,v;
        cin>>u>>v;
        mp[u].push_back(v);
        ind[v]++;
    }
    int qx;
    int cnt=0;
    cin>>qx;
    queue<int> q;
    for(int i=1;i<=n;i++)
        if(ind[i]==0)
            q.push(i);
    vector<int> seq; 
    while(q.size()) {
        int x = q.front();q.pop();
        seq.push_back(x);
        for(auto p: mp[x]) {
            ind[p]--;
            if(ind[p]==0)
                q.push(p);
        }
    }
    vector<int> dp(n+1);
    dp[t] = 1;

    for(int i=seq.size()-1;i>=0;i--) {
        int k = seq[i];
        for(auto ne: mp[k]) {
            dp[k] = (dp[k] + dp[ne]) % mod;
        }
    } 
    for(int i=0;i<qx;i++) {
        int s;
        cin>>s;
        //s->t cnt 
        cout << dp[s]<<endl;
    }
    return 0;
}

算法常用解题技巧 文章被收录于专栏

算法常用解题技巧

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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