日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > poj1947--Rebuilding Roads(樹狀dp)

poj1947--Rebuilding Roads(樹狀dp)

來源:程序員人生   發布時間:2015-03-25 11:56:46 閱讀次數:3448次
Rebuilding Roads
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 9496   Accepted: 4316

Description

The cows have reconstructed Farmer John's farm, with its N barns (1 <= N <= 150, number 1..N) after the terrible earthquake last May. The cows didn't have time to rebuild any extra roads, so now there is exactly one way to get from any given barn to any other barn. Thus, the farm transportation system can be represented as a tree. 

Farmer John wants to know how much damage another earthquake could do. He wants to know the minimum number of roads whose destruction would isolate a subtree of exactly P (1 <= P <= N) barns from the rest of the barns.

Input

* Line 1: Two integers, N and P 

* Lines 2..N: N⑴ lines, each with two integers I and J. Node I is node J's parent in the tree of roads. 

Output

A single line containing the integer that is the minimum number of roads that need to be destroyed for a subtree of P nodes to be isolated. 

Sample Input

11 6 1 2 1 3 1 4 1 5 2 6 2 7 2 8 4 9 4 10 4 11

Sample Output

2

Hint

[A subtree with nodes (1, 2, 3, 6, 7, 8) will become isolated if roads 1⑷ and 1⑸ are destroyed.] 

Source

USACO 2002 February

給出n個節點的樹,給出值m。問最少刪除幾條邊可以得到節點個數為m的子樹。

樹狀dp,統計出以節點i為根的子樹得到節點個數為j的子樹最少刪除的邊數。

 

#include <cstdio> #include <cstring> #include <algorithm> using namespace std ; #define INF 0x3f3f3f3f struct node { int v , next ; }edge[160] ; int head[160] , cnt ; int c[160][160] , sum[160]; void add(int u,int v) { edge[cnt].v = v ; edge[cnt].next = head[u] ; head[u] = cnt++ ; } void dfs(int u) { sum[u] = 1 ; if( head[u] == ⑴ ) { c[u][ sum[u] ] = 0 ; return ; } int i , j , k , v , temp ; for(i = head[u] ; i != ⑴ ; i = edge[i].next) { v = edge[i].v ; dfs(v) ; sum[u] += sum[v] ; } c[u][ sum[u] ] = 0 ; for(i = head[u] ; i != ⑴ ; i = edge[i].next) { v = edge[i].v ; c[v][0] = 1 ; for(j = 0 ; j <= sum[u] ; j++) { for(k = 0 ; k <= sum[v] ; k++) { temp = sum[v] - k ; if( j >= temp ) c[u][ j-temp ] = min( c[u][j-temp],c[u][j]+c[v][k] ) ; } } c[v][0] = INF ; } return ; } int main() { int n , p , i , u , v ; memset(head,⑴,sizeof(head)) ; memset(c,INF,sizeof(c)) ; memset(sum,0,sizeof(sum)) ; cnt = 0 ; scanf("%d %d", &n, &p) ; add(0,1) ; for(i = 0 ; i < n⑴ ; i++) { scanf("%d %d", &u, &v) ; add(u,v) ; } dfs(0) ; int min1 = c[1][p] ; for(i = 2 ; i <= n ; i++) { min1 = min(min1,c[i][p]+1) ; } printf("%d ", min1) ; return 0 ; }


 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品久久一区二区三区 | 国产区在线看 | 九九热免费精品视频 | 性高潮网站 | 污网站免费观看 | 99久久精品免费看国产四区 | av中文字幕在线观看 | 国产一区二区毛片 | 国产黄av | 欧美一区二区三区在线观看视频 | 国产精品一区二区精品视频免费看 | 国产精品一区二区三区久久 | 天天摸天天 | 国产色女| 国产真实精品久久二三区 | 国产一二三四区 | 美日韩视频 | 91精品国产综合久久福利 | 亚洲国产一区在线观看 | 欧美成人免费在线视频 | 国产亚洲二区 | 亚洲综合一区在线 | 国产91在线 | 亚洲 | 成人免费视频网站在线看 | 日本视频不卡 | 欧美xxxx视频 | 国产精品久久久久久久久搜平片 | 精品久久网 | 亚洲伦理一区二区 | 国产va在线观看 | 免费久草在线 | 久久99成人 | 久久精品视频播放 | 日本黄色电影网址 | yw.139尤物在线精品视频 | 久久男女视频 | 欧美日韩国产精品 | 中文字幕一区在线观看视频 | 欧美一区二区精品 | 二区欧美 | 国产在线精品一区二区 |