NYOJ 679 The Weight of Tree 搜索+dp+邻接表
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 679 The Weight of Tree 搜索+dp+邻接表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
The Weight of Tree
時間限制:3000?ms ?|? 內存限制:65535?KB 難度:4 描述樣例輸出
5 5 8 ? ? 從第一個點一直往下深搜,然后回溯,判斷子節點的值是否大于0,如果大于0,父節點的值變為當前的值加上子節點的值。最后輸出最大值即可。 #include<stdio.h> #include<string.h> #include<vector> #include<algorithm> #define N 100005 using namespace std; vector<int> vec[N]; int vis[N],dp[N],MAX; void dfs(int x) {vis[x]=1;for(int i=0;i<vec[x].size();i++){int y=vec[x][i];if(vis[y])continue;dfs(y);if(dp[y]>0)dp[x]+=dp[y];MAX=max(dp[x],MAX);} } int main() {int t,n,i,a,b;scanf("%d",&t);while(t--){memset(vis,0,sizeof(vis));memset(vec,0,sizeof(vec));scanf("%d",&n);MAX=-999999;for(i=1;i<=n;i++){scanf("%d",&dp[i]);MAX=max(dp[i],MAX);}for(i=1;i<n;i++){scanf("%d%d",&a,&b);vec[a].push_back(b);vec[b].push_back(a);}dfs(1);printf("%d\n",MAX);}return 0; }
總結
以上是生活随笔為你收集整理的NYOJ 679 The Weight of Tree 搜索+dp+邻接表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 夺命连环问:一个 TCP 连接可以发多少
- 下一篇: SpringBoot中如何灵活的实现接口