POJ 1935(樹的最優遍歷,動規與DFS演算法)

2021-09-28 14:45:51 字數 778 閱讀 8623

poj_1935,樹的最優遍歷,結合動規與dfs,參考部落格

#include

#include

#include

#define n 50005

using

namespace std;

//某城市的道路,ed為連線的城市,val為道路長度,存放在gra中

struct e};

vectorgra[n]

;//每個城市都有乙個vector用於存放他的道路資訊

//每個城市的:父節點、是否要被經過、從該城市出發經過其所有需要旅行的子節點城市所需走的距離

//其中,dp[k][0]是來回距離(即需要返回該城市),dp[k][1]是單程距離(不需要返回該城市)

int fa[n]

,flag[n]

,dp[n][2

];int n,root;

void

dfs(

int s,

int f)

}void

dpt(

int s)

for(

int i=

0;i.size()

;i++)}

void

run()}

dpt(root)

;printf

("%d\n"

,dp[root][1

]);}

intmain()

run();

}return0;

}

poj 1935 搜尋 回溯

解題思路 先我們考慮從源點出發到所有自己想要經過的點然後在回到源點sum,顯然每條邊都必須經過源點 這個我們可以一次dfs求出 但題目的意思是可以不用回到源點,那麼我們可以再求源點到所有要經過的點的最遠距離ans,於是答案便是sum ans.這道題的思路確實是很巧妙,一開始我還是在想如何表示從某一點...

POJ 2728 最優比例生成樹

有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t 最大 或最小 設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率 r benifit i x i cost i x i ...

poj2728 最優比率生成樹

這個題的意思是給你乙個連通圖,圖上每個點都有連個權值ai,bi讓你選乙個生成樹使得sigma ai xi sigma bi xi 最小,對比與基礎的01規劃,我們假設答案是mid,然後建立乙個圖,其新的邊的權值是ai mid bi,然後求解最小生成樹,假設其答案是tp,如果tp 0,說明還有更優的解...