bzoj4011 HNOI2015 落憶楓音

2022-05-21 13:15:09 字數 997 閱讀 2594

(題目鏈結)

給出乙個拓撲圖,再加入一條邊,問樹形圖個數。

對於那個式子的理解,我們考慮不合法的情況就是出現環的情況,而環中一定是包含新加入的那條邊$(x—>y)$,所以剩餘部分就是一條從$y$到$x$的路徑。在環以外,還有乙個不會到達環的拓撲圖,考慮這樣的拓撲圖的方案數,就是$\prod_degree_j$。我們列舉路徑,就得到了那個式子。

線性求逆元

// bzoj4011

#include#include#include#include#include#include#include#define ll long long

#define inf (1ll<<30)

#define mod 1000000007

#define pi acos(-1.0)

#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);

using namespace std;

const int maxn=200010;

ll inv[maxn],f[maxn],ans;

int rr[maxn],r[maxn],c[maxn],head[maxn],n,m,s,t,cnt;

struct edge e[maxn];

void link(int u,int v) ;head[u]=cnt;

}int main()

r[t]++;ans=1;

for (int i=2;i<=n;i++) (ans*=r[i])%=mod;

if (t==1)

queueq;

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

f[t]=ans;

while (!q.empty())

} printf("%lld",(ans-f[s]+mod)%mod);

return 0;

}

BZOJ 4011 HNOI2015 落憶楓音

題意 給乙個有向無環圖,然後叫一條邊,問以1為根的生成樹數量。題面好長啊,出題人真能編故事 先考慮不加那條邊,則麼ans d 2 d 3 d 4 d n d為入度 因為在乙個dag中,只要除根以外的點每個點選一條入邊,就能獲得一棵生成樹。現在考慮加了這條邊,如果再這麼算,就有可能出現環的情況,所以我...

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為根的包含全部...