题目链接
下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。
输入样例 1:
7 8
7 6
7 4
6 5
4 1
5 2
5 3
2 1
3 1
7 1
输出样例 1:
3 Yes
输入样例 2:
7 8
7 6
7 4
6 5
4 1
5 2
5 3
6 1
3 1
7 1
输出样例 2:
3 No
答案
#include <iostream>
#include<bits/stdc++.h>
#define ll long long
#define PII pair<int,int>
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
const int N = 555;
using namespace std;
int mp[N][N];
bool vis[N];
int s,e;
int n,m;
int tot;
int path[N];
bool flag;
int DFS(int x){
vis[x]=1;
if(path[x]) return path[x];
for(int i=1;i<=n;i++){
if(mp[x][i])
path[x]+=DFS(i);
}
return path[x];
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
mp[u][v]=1;
}
cin>>s>>e;
path[e]=1;
tot=DFS(s);
flag=0;
for(int i=1;i<=n;i++){
if(vis[i]&&!path[i]){
flag=1;
break;
}
}
cout<<tot<<" ";
if(!flag) puts("Yes");
else puts("No");
return 0;
}