題意是:在m點有兩輛車,要清掃所有的路,問走的最短路。題目鏈結
和poj1935 差不多,poj 1935 是乙個人走的最短路。
題解 所有邊權和 * 2 —— 樹的最長路徑。
樹形dp的解法不會,
#include#include#include#includeusing namespace std;
#define ff freopen("input.txt","r",stdin)
#define mem(x,y) memset(x,y,sizeof(x))
#define ll long long
#define inf 1000020
const int n=100010;
int head[n];
struct point
edge[n*2];
int tot,dis[n];
inline void init()
void add(int u,int v,int w)
int bfs(int u,int n)}}
int maxn=-1;
int pos=-1;
for(int i=1;i<=n;i++)
if(dis[i]>maxn)
return pos;
}int main()
{ //ff;
int n,i,m;
while(~scanf("%d%d",&n,&m))
{init();
int sum=0;
for(i=1;i
POJ 1849 樹的直徑 Two
如果乙個點開始遍歷一棵樹再回到原點那麼每條邊走兩次。現在是兩個人從同一點出發,那麼最後遍歷完以後兩人離得越遠越好。最後兩人所處位置的路徑上的邊走了一次,其他邊走了兩次。要使總路程最小,兩人最後停在直徑兩端。所以最終答案就是總權值 2 樹的直徑 1 include 2 include 3 includ...
poj3342 poj2342 樹形dp入門
poj3342 最近做樹形dp,渣渣 成喳喳喳辣,真是不開森。還是適合做基礎入門題。題意 比較好理解。就是一棵樹,選m個點,兒子和父親不能同時選。問最多能選多少個 題目中說的是上級,當然我這裡省略就是用父親節點和孩子結點表示啦 其實dp的內容很好想,d i 0 表示第i個點不選的結果,d i 1 表...
poj2486 Apple Tree 樹形dp揹包
題意 由n個結點組成的樹,每個結點有個點權,你從結點1出發,問最多走m步可以獲得點權和 重複走乙個結點只有第一次走過會 獲得點權值 的最大值。思路 設dp i j k 表示從i結點走j步 k 0表示回到i結點共j步,k 1表示j步之後不回到i節點 可獲得點權和的最大值。考慮當前的結點u,以及它的子結...