P3931 SAC E 1 一道難題 Tree

2021-10-02 09:37:29 字數 1477 閱讀 1628

題目描述

冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。

她設定了一棵樹(有根)。樹的每一條邊上具有割掉該邊的代價。

魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。

幫幫魏瀟承吧。

注:所謂割開一棵有根樹,就是刪除若干條邊,使得任何任何葉子節點和根節點不連通。

輸入格式

輸入第一行兩個整數n,s表示樹的節點個數和根。

接下來n-1行每行三個整數a、b、c,表示a、b之間有一條代價為c的邊。

輸出格式

輸出包含一行,乙個整數,表示所求最小代價。

題解:最小割/最大流,設定乙個超級匯點t,讓所有葉子結點連向t,跑一遍最大流即可

ac**:

#pragma gcc optimize(2)

#include

#include

using

namespace std;

using

namespace __gnu_cxx;

#define ll long long

const

int maxn =

4e5+50;

const

int mod =

1e9+7;

const

int inf =

0x3f3f3f3f

;int n,s,t,tot=

1,head[maxn]

,w[maxn]

,nxt[maxn]

,to[maxn]

,h[maxn]

;vectorint,

int>

> g[maxn]

;inline

void

ade(

int u,

int v,

int ww)

inline

void

add(

int u,

int v,

int w)

inline

void

dfs(

int u,

int fa)if(

!flag)

add(u,t,inf);}

inline

intbfs()

}}return h[t];}

inline

intdfs

(int x,

int f)}if

(!fl) h[x]=-

1;return fl;

}inline

intdinic()

signed

main()

dfs(s,0)

;printf

("%d\n"

,dinic()

);return0;

}

SAC E 1 一道難題 Tree

冴月麟和魏瀟承是好朋友。冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。她設定了一棵樹 有根 樹的每一條邊上具有割掉該邊的代價。魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。幫幫魏瀟承吧...

SAC E 1 一道難題 Tree(樹形DP)

冴月麟和魏瀟承是好朋友。冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。她設定了一棵樹 有根 樹的每一條邊上具有割掉該邊的代價。魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。幫幫魏瀟承吧...

SAC E 1 一道中檔題 Factorial

sol君 爐石主播 和sol菌 完美資訊教室講師 是好朋友。sol君很喜歡階乘。而sol菌很喜歡研究進製。這一天,sol君跟sol菌炫技,隨口算出了n的階乘。sol菌表示不服,立刻就要算這個數在k進製表示下末尾0的個數。但是sol菌太菜了於是請你幫忙。輸入格式 每組輸入僅包含一行 兩個整數n,k。輸...