T57274 黑暗城堡

2022-04-29 03:03:09 字數 1418 閱讀 4658

先求出各個點到 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 個房間,...