天梯赛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号