#include#include#includeusingnamespacestd;intN,V[10100];vectorson[10100];//圖intMAX[10100],MAXN[10100];//最大值及其標號intSMAX[10100],SMAXN[10100];//次大值及其標號boolvis[10100];//標" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

hdu2196Computer 經典樹形dp 在樹上求最長距離

系統 2445 0

hdu2196

題解

兩次搜索的方法

?

    #include<iostream>

#include<cstdio>

#include<cstring>

#include<vector>

using namespace std;



int N,V[10100];						

vector<int>son[10100];				//圖 

int MAX[10100],MAXN[10100];			//最大值及其標號 

int SMAX[10100],SMAXN[10100];		//次大值及其標號 

bool	vis[10100];					//標記訪問狀態  



void dfs1(int n)					//在以n為根節點的子樹上求出節點n到葉子節點距離的最大值 

{

	MAX[n]=SMAX[n]=0;

	int len=son[n].size();

	for(int i=0;i<len;i++)

	{

		int k=son[n][i];	//兒子標號 - - 

		dfs1(k);

		if(SMAX[n]<MAX[k]+V[k])	

		{

			SMAX[n]=MAX[k]+V[k];

			SMAXN[n]=k;

			if(SMAX[n]>MAX[n]){

				swap(SMAX[n],MAX[n]);

				swap(SMAXN[n],MAXN[n]);

			}

		}

	}

}



void dfs2(int n)			//求出n的兒子們在樹中能延伸的最大距離(n的最大距離及次大距離已得到) 

{

	int len=son[n].size();

	vis[n]=1;

	for(int i=0;i<len;i++)

	{

		int k=son[n][i];

		if(vis[k])	continue;

		if(k==MAXN[n]){

			

			if(SMAX[k]<SMAX[n]+V[k]){

				SMAX[k]=SMAX[n]+V[k];

				SMAXN[k]=n;

				if(SMAX[k]>MAX[k]){

					swap(SMAX[k],MAX[k]);

					swap(SMAXN[k],MAXN[k]);

				}

			}

		}

		else{

			

			if(SMAX[k]<MAX[n]+V[k]){

				SMAX[k]=MAX[n]+V[k];

				SMAXN[k]=n;

				if(SMAX[k]>MAX[k]){

					swap(SMAX[k],MAX[k]);

					swap(SMAXN[k],MAXN[k]);

				}

			}

		}

		dfs2(k);

	}

}







int main()

{

	int i,j,k,u,v;

	while(scanf("%d",&N)!=EOF)

	{

		for(i=1;i<=N;i++)	son[i].clear();

		for(i=2;i<=N;i++){

			scanf("%d%d",&u,&V[i]);

			son[u].push_back(i);					//i的父親是u 

		}

		memset(vis,0,sizeof(vis));

		dfs1(1);

	//	測試 

	//	for(i=1;i<=N;i++)	printf("~%d ",MAX[i]);printf("\n");

	//	for(i=1;i<=N;i++)	printf("~%d ",SMAX[i]);printf("\n");

	

		memset(vis,0,sizeof(vis));

		dfs2(1);

		for(i=1;i<=N;i++)	printf("%d\n",MAX[i]);

	}

	return 0;

}

/*

5 

1 1 

2 1 

3 1 

1 1 

*/
  


?

?

hdu2196Computer 經典樹形dp 在樹上求最長距離


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品资源网站在线观看 | 超碰欧美 | 国产成人av在线播放 | 欧美精品午夜久久久伊人 | 亚洲激情视频 | 国产在线视频色综合 | 国产成人av在线播放 | 91久久久久久久一区二区 | 额去鲁97在线观看视频 | 激情男女视频 | 亚洲精品久久久久久一区二区 | 亚洲免费在线视频 | 五月天婷婷缴情五月免费观看 | 91 久久| 亚洲一区二区三区久久精品 | 国产一区二区三区久久久久久久久 | 日韩欧美一区二区三区不卡在线 | 美女视频黄a视频免费全过程 | 日韩精品手机在线 | 日韩视频在线观看免费 | 午夜私人影院粉色视频我要 | 92精品国产自产在线观看48页 | 加勒比AV一本大道香蕉大在线 | 亚洲欧美色国产综合 | 久久综合九色综合桃花 | 又爽又黄又无遮挡的激情视频免费 | 一级毛片 在线播放 | 日日日日日 | 成人福利视频 | 亚洲欧美视频 | 久久久成人精品 | 天天草b | 亚洲高清视频一区 | 精品av | 丁香综合五月 | 久在线观看视频 | 亚洲天堂一区二区三区四区 | 毛片一级在线 | 97国内精品久久久久久久影视 | 日本高清动作片www网站免费 | 国产精品久久久久久久免费大片 |