一二三四五 上山打老虎

天梯赛L3-025 那就别担心了 (30 分)

链接:https://pintia.cn/problem-sets/994805046380707840/problems/1336215880692482060

思路:dfs一下每个点到终点的条数,并记录走过的点:如果存在走过的点到达不了终点(也就是线路条数为0)则不满足条件。

代码:

#include<bits/stdc++.h>

using namespace std;
vector<int>ve[1005];
int vis[1005];
int num[1005];
int n,m,s,d;
int dfs(int x){
    vis[x]=1;
    if(num[x])return num[x];
    for(int i=0;i<ve[x].size();i++)
        num[x]+=dfs(ve[x][i]);
    return num[x];
}
int main (){
    cin>>n>>m;
    int l,r;
    for(int i=0;i<m;i++){
        cin>>l>>r;
        ve[l].push_back(r);
    }
    cin>>s>>d;
    num[d]=1;
    int cnt=dfs(s);
    cout<<cnt;
    for(int i=1;i<=n;i++){
        if(vis[i]&&num[i]==0){
            cout<<" No";
            return 0;
        }
    }
    cout<<" Yes";
    return 0;
}
posted @ 2021-04-23 19:00  黒川川  阅读(209)  评论(0)    收藏  举报