先求出各個點到 1 的最短路徑。分別用兩個陣列將最短路徑記錄下來(乙個要用來排序)。按排序後的 dis 值從小到大列舉各點加入樹有多少種方案,最後根據乘法原理把各個點的方案數乘起來就是答案。(實現起來會比較繁瑣)
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define lck_max(a,b) ((a)>(b)?(a):(b))
#define lck_min(a,b) ((a)<(b)?(a):(b))typedef
long
long
ll;const
int maxn=1e6+7
;const
int inf=1e9+7
;const ll mod=(1ll<<31)-1
;inline ll read()
while
(isdigit(ls))
return xs*kr;
}inline
void
out(ll xs)
if(xs<0) putchar('
-'),xs=-xs;
int kr[57],ls=0
;
while(xs) kr[++ls]=xs%10,xs/=10
;
while(ls) putchar(kr[ls]+48),ls--;
}inline ll ksc(ll x,ll y)
ll n,m,ans=1,cnt,head[maxn<<1],f[maxn<<1
],dis[maxn];
bool vis[maxn<<1
];priority_queue
,vector>,greater> >q;
struct
node
t[maxn
<<1
];struct
hht[maxn
<<1
];inline
bool cmp(const hh&x,const hh&y)
inline
void
add(ll nex,ll to,ll w)
inline
void
dijkstra(ll s)}}
}inline
void
dfs()
}}ll x,y,z;
intmain()
CH6202 黑暗城堡
初見安 這裡是乙個我沒用過的 的和bzoj的入門oj的傳送門 ch6202 入門oj p4928 第一行有兩個整數 n 和 m。之後 m 行,每行三個整數 x,y 和 l,表示可以修建 x 和 y 之間的一條長度為 l 的通道。2 n 1000,n 1 m n n 1 2,1 l 100 輸出乙個整...
黑暗城堡(最小生成樹)
傳送門 解析 這道書上例題主要用dijkstra演算法解決,但是關鍵的一步是如何計算有多少種方案。統計有多少個節點滿足x屬於t,並且dis p dis x edge x,p 其中edge表示邊的長度。根據乘法原理,我們把每一步統計出的數量乘起來,就得到了題目的結果。include define in...
黑暗城堡(最短路徑樹)
黑暗城堡 castle.pas c cpp 題目描述 在順利攻破 lord lsp 的防線之後,lqr 一行人來到了 lord lsp 的城堡下方。lord lsp 黑化 之後雖然擁有了強大的超能力,能夠用意念力製造建築物,但是智商水平卻沒怎麼增加。現 在 lqr 已經搞清楚黑暗城堡有 n 個房間,...