题意
有(n)盏灯,(m)个限制。每个限制((x,y))表示第(x)盏灯与第(y)盏灯之间必须且只能亮一盏。
记一种情况(x)亮着的灯的数量为(f_x),求(sum {(f_x)}^k)
(nleq 200000,kleq 100)
做法
二分图,然后分连通块处理
(x^n=sumlimits_{i} S2(n,i)x^{underline{i}}=sumlimits_{i} {xchoose i}S2(n,i)i!)
令(f_i)为(i)个亮的方案数
那么要算的实际是这个(f_ii^n =f_isumlimits_{j}{ichoose j}S2(n,j)j!)
那么维护(f_i'=sumlimits_j f_j{jchoose i}),那么答案就是(sumlimits_{i=0}^k f_i'S2(k,i)i!)
那加入的新连通块两种颜色((s1,s2))
考虑将(s1)融进去,那将(f_i')转化成(f_i''=sumlimits_{j}f_{j-s1}{jchoose i})
考虑(s1=1),(f_i''=sumlimits_{j}f_{j-1}{jchoose i}=f_i'+f_{i-1}'),其他情况就做若干次就行
(O(nk))