栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3201 Tree of Tree

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3201 Tree of Tree

#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <map>using namespace std;#define mxn 105#define mxe 205int first[mxn], vv[mxe], nxt[mxe], e;int dp[mxn][mxn], w[mxn], n, k;void add( int u, int v ) {vv[e] = v; nxt[e] = first[u]; first[u] = e++;}void cal( int u, int f ) {for( int i = first[u]; i != -1; i = nxt[i] ) {int v = vv[i];if( v == f ) continue;cal( v, u );for( int i = k; i >= 0; --i )for( int j = 0; j <= i; ++j )dp[u][i] = max( dp[u][i], dp[u][i-j] + dp[v][j] );}for( int i = k; i > 0; --i )dp[u][i] = dp[u][i-1] + w[u];dp[u][0] = 0;}int main(){int u, v;while( scanf( "%d%d", &n, &k ) == 2 ) {memset( dp, 0, sizeof(dp) );memset( first, -1, sizeof(first) ); e = 0;for( int i = 0; i < n; ++i )scanf( "%d", w + i );for( int i = 1; i < n; ++i ) {scanf( "%d%d", &u, &v );add( u, v ); add( v, u );}cal( 0, -1 );int ans = 0;for( int i = 0; i < n; ++i )ans = max( ans, dp[i][k] );printf( "%dn", ans );}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378493.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号