Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef int ll;
  4. vector<pair<ll,bool> > aj[300005];
  5. vector<ll> aj2[3005];
  6. bool vis[300005];
  7. ll arr[3005], ma[300005];
  8. ll dp[3005][3002],parent[300005],m,num=1;
  9. void dfs(ll u, ll par,bool a){
  10. if(a){
  11. num++;
  12. aj2[ma[par]].push_back(num);
  13. ma[u]=num;
  14. parent[num]=ma[par];
  15. }else {
  16. ma[u]=ma[par];
  17. }
  18. vis[u]=true;
  19. arr[ma[u]]++;
  20. for(ll i=0;i<aj[u].size();i++){
  21. if(!vis[aj[u][i].first])dfs(aj[u][i].first,u,aj[u][i].second);
  22. }
  23. }
  24. void solve(ll u,ll c){
  25. for(ll i=c;i<=m;i++){
  26. if(c)dp[u][i]=dp[parent[u]][i-1]+arr[u];
  27. else dp[u][i]=arr[u];
  28. }
  29. for(ll i=0;i<aj2[u].size();i++){
  30. solve(aj2[u][i],c+1);
  31. }
  32. for(ll i=0;i<=m;i++)dp[parent[u]][i]=max(dp[parent[u]][i],dp[u][i]);
  33. }
  34. int main(){
  35. ll n,i,j,k,a,b,c,l,u;
  36.  
  37. ios::sync_with_stdio(0);
  38. cin.tie(0);
  39. cin>>n>>m>>l>>u;
  40. for(i=0;i<l;i++){
  41. cin>>a>>b;
  42. aj[a].push_back(make_pair(b,true));
  43. aj[b].push_back(make_pair(a,true));
  44. }
  45. for(i=0;i<u;i++){
  46. cin>>a>>b;
  47. aj[a].push_back(make_pair(b,false));
  48. aj[b].push_back(make_pair(a,false));
  49. }
  50. ma[0]=1;
  51. dfs(0,0,false);
  52. parent[1]=1;
  53. solve(1,0);
  54. cout<<dp[1][m];
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement