日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Usaco2010 Nov]Visiting Cows

發布時間:2023/12/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Usaco2010 Nov]Visiting Cows 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過了幾周的辛苦工作,貝茜終于迎來了一個假期.作為奶牛群中最會社交的牛,她希望去拜訪N(1<=N<=50000)個朋友.這些朋友被標號為1..N.這些奶牛有一個不同尋常的交通系統,里面有N-1條路,每條路連接了一對編號為C1和C2的奶牛(1 <= C1 <= N; 1 <= C2 <= N; C1<>C2).這樣,在每一對奶牛之間都有一條唯一的通路.
FJ希望貝茜盡快的回到農場.于是,他就指示貝茜,如果對于一條路直接相連的兩個奶牛,貝茜只能拜訪其中的一個.當然,貝茜希望她的假期越長越好,所以她想知道她可以拜訪的奶牛的最大數目.

第1行:單獨的一個整數N
第2..N行:每一行兩個整數,代表了一條路的C1和C2.

單獨的一個整數,代表了貝茜可以拜訪的奶牛的最大數目.

7
6 2
3 4
2 3
1 2
7 6
5 6

4

分析:

樹上DP。

dp[i][0]表示不選i,以i為根的子樹的最大答案。

dp[i][1]表示選i,以i為根的子樹的最大答案。

狀態轉移方程:dp[i][0]=max(dp[j][0],dp[j][1]),dp[i][1]=1+f[dp][0]

#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <map> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; pair<int,int>e[150005]; int tol,h[50005],dp[50005][2],n; void add_edge(int x,int y){e[++tol].first=y;e[tol].second=h[x];h[x]=tol; } void init() {cin>>n;range(i,1,n-1){int x,y;cin>>x>>y;add_edge(x,y);add_edge(y,x);} } void dfs(int x,int fu){dp[x][1]=1,dp[x][0]=0;for(int i=h[x];i;i=e[i].second){int fir=e[i].first;if(fir==fu)continue;dfs(fir,x);dp[x][1]+=dp[fir][0];dp[x][0]+=max(dp[fir][1],dp[fir][0]);} } void solve(){dfs(1,0);cout<<max(dp[1][0],dp[1][1])<<endl; } int main() {init();solve();return 0; } View Code

?

轉載于:https://www.cnblogs.com/Rhythm-/p/9333673.html

總結

以上是生活随笔為你收集整理的[Usaco2010 Nov]Visiting Cows的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。