当前位置:   article > 正文

P2016 战略游戏(dp)

p2016 战略游戏

https://www.luogu.com.cn/problem/P2016

思路:类似上司的舞会

  1. #include<iostream>
  2. #include<vector>
  3. #include<queue>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<map>
  7. #include<set>
  8. #include<cstdio>
  9. #include<algorithm>
  10. #define debug(a) cout<<#a<<"="<<a<<endl;
  11. using namespace std;
  12. const int maxn=2e3+100;
  13. typedef long long LL;
  14. inline LL read(){LL x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
  15. return x*f;}
  16. vector<LL>g[maxn];
  17. LL dp[maxn][2];
  18. void dfs(LL u,LL fa){
  19. dp[u][1]=1;
  20. dp[u][0]=0;
  21. for(LL i=0;i<g[u].size();i++){
  22. LL v=g[u][i];
  23. if(v==fa) continue;
  24. dfs(v,u);
  25. dp[u][1]+=min(dp[v][0],dp[v][1]);
  26. dp[u][0]+=dp[v][1];
  27. }
  28. }
  29. int main(void){
  30. cin.tie(0);std::ios::sync_with_stdio(false);
  31. LL n;cin>>n;
  32. for(LL i=1;i<=n;i++){
  33. LL id;cin>>id;
  34. id++;
  35. LL m;cin>>m;
  36. for(LL j=1;j<=m;j++){
  37. LL v;cin>>v;v++;
  38. g[id].push_back(v);
  39. g[v].push_back(id);
  40. }
  41. }
  42. dfs(1,0);
  43. cout<<min(dp[1][1],dp[1][0])<<"\n";
  44. return 0;
  45. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号