(題目鏈結)
給出乙個拓撲圖,再加入一條邊,問樹形圖個數。
對於那個式子的理解,我們考慮不合法的情況就是出現環的情況,而環中一定是包含新加入的那條邊$(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為根的包含全部...