L3-025 那就别担心了
题意就是给出一个图问和起点a终点b问从a到b有多少条路,a是不是只能以b为终点
直接dfs可以得28分
最后一个点超时可以使用记忆化剪枝通过
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long ll;
vector<int>to[505];
bool vis[505];
int f[505];
int n,m;
int ans=0;
string res="Yes";
int dfs(int x,int ed){
if(vis[x]){
return f[x];
}
vis[x]=true;
if(x==ed)return f[x]=1;
if(!to[x].size()){
res="No";
return 0;
}
for(auto y:to[x]){
f[x]+=dfs(y,ed);
}
return f[x];
}
void slove(){
int a,b;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a>>b;
to[a].push_back(b);
}
cin>>a>>b;
dfs(a,b);
cout<<f[a]<<" "<<res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int T=1;
// cin>>T;
while(T--){
slove();
}
return 0;
}
L3-026 传送门
看完树上分块和splay后回来补上