L3-025 那就别担心了(团体程序设计天梯赛-练习集)

link

#include <bits/stdc++.h>

using namespace std;

int N, M, A, B;
vector<int> edge[510];
bool flag; 
int nums[510];

void dfs(int index){
    if(nums[index]) return ;
    for(auto e: edge[index]){
        if(nums[e] == 0) dfs(e);
        nums[index] += nums[e];
    }
    if(nums[index] == 0) flag = 1;
}

signed main(){
    cin >> N >> M;

    for(int i = 1; i <= M; ++i){
        cin >> A >> B;
        edge[A].push_back(B);
    }
    
    cin >> A >> B;
    nums[B] = 1;
    dfs(A);

    cout << nums[A] << " ";
    //不可以如下,因为会考虑所有的,而不仅仅是从A到B
    // for(int i = 1; i <= N; ++i){
    //     if(nums[i] == 0) flag = true;
    // }
    if(flag) cout << "No" << endl;
    else cout << "Yes" << endl;
    
    return 0;
}
posted @ 2025-02-26 13:13  awei040519  阅读(14)  评论(0)    收藏  举报