1 条题解

  • 0
    @ 2025-7-23 11:31:21
    #include<iostream>
    #include<vector>
    #include<queue>
    using namespace std;
    int main(){
        vector<int>a[5001];
        int n,m,s,t,in[5001],x,y;
        long long dp[5001]={0};
        cin>>n>>m>>s>>t;
        dp[s]=1;
        while(m--){
            cin>>x>>y;
            a[x].push_back(y);
            in[y]++;
        }queue<int>q;
        for(int i=1;i<=n;i++)if(!in[i])q.push(i);
        while(q.size()){
            for(int i=0;i<a[q.front()].size();i++){
                if(--in[a[q.front()][i]]==0)q.push(a[q.front()][i]);
                dp[a[q.front()][i]]+=dp[q.front()];
            }q.pop();
        }if(dp[t])cout<<dp[t];
        else cout<<"No Path!";
        return 0;
    }
    
    • 1

    信息

    ID
    8477
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者