題目描述
冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。
她設定了一棵樹(有根)。樹的每一條邊上具有割掉該邊的代價。
魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。
幫幫魏瀟承吧。
注:所謂割開一棵有根樹,就是刪除若干條邊,使得任何任何葉子節點和根節點不連通。
輸入格式
輸入第一行兩個整數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。輸...