BZOJ 4011 HNOI2015 落憶楓音

2021-07-02 12:27:20 字數 1007 閱讀 2798

題意:給乙個有向無環圖,然後叫一條邊,問以1為根的生成樹數量。

題面好長啊,出題人真能編故事…先考慮不加那條邊,則麼ans=d[2]d[3]d[4]…d[n].(d為入度)。因為在乙個dag中,只要除根以外的點每個點選一條入邊,就能獲得一棵生成樹。現在考慮加了這條邊,如果再這麼算,就有可能出現環的情況,所以我們減去環的情況就能得到答案。考慮在dag上dp,f[i]=sigma(除去t->i的路徑上的點的度數乘積),利用拓撲排序進行轉移。f[u]=sigma(f[v])/d[u](v是u的入點集合)。

tips:寫逆元

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=100000+10;

const

int md=1000000007;

long

long ny[maxn],f[maxn];

int d[maxn],td[maxn],n,s,t,m;

long

long bow(long

long x,int y)

return p;

}vector

g[maxn];

queue

q;int main()

long

long ans=1;

d[t]++;

for(int i=2;i<=n;i++)

f[t]=ans;

for(int i=1;i<=n;i++) if(!td[i]) q.push(i);

if(t==1)

while(!q.empty())

}ans=(ans-f[s]+md)%md;

printf("%lld\n",ans);

return

0;}

BZOJ4011 HNOI2015 落憶楓音

用脈絡樹總數減去不合法的情況 即樹上有環的情況 拓撲序dp,注意特判連的邊指向1的情況 學到了新姿勢 線性求逆元 原理 假設現在要求a的逆元,x mod a,y mod a ax y 0 ax y a 1 x y 1 ax y 0 ax y a 1 x y 1 code include includ...

BZOJ4011 HNOI2015 落憶楓音

不妨假設楓葉上有 n個穴位,穴位的編號為 1 n。有若干條有向的脈絡連線著這些穴位。穴位和脈絡組成乙個有向無環圖 稱之為脈絡圖 例如圖 1 穴位的編號使得穴位 1 沒有從其他穴位連向它的脈絡,即穴位 1 只有連出去的脈絡 由上面的故事可知,這個有向無環圖存在乙個樹形子圖,它是以穴位 1為根的包含全部...

bzoj4011 HNOI2015 落憶楓音

description 恆逸,你相信靈魂的存在嗎?郭恆逸和姚楓茜漫步在楓音鄉的街道上。望著漫天飛舞的紅楓,楓茜突然問出 這樣乙個問題。相信吧。不然我們是什麼,一團肉嗎?要不是有靈魂 我們也不可能再見 到你姐姐吧。恆逸給出了乙個略微無厘頭的回答。楓茜聽後笑了笑。那你仔細觀察過楓葉嗎?說罷,楓茜伸手,接...