天梯赛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;
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号