感谢gryz的mly大好人再次给我提供了题目和数据。

和昨晚那个题几乎一样,都是x^n最后转化成第二类斯特林数*阶乘*Σ(和路径长度有关的组合数),而因为组合数是可以利用Pascal公式实现O(1)递推的,所以最后的复杂度都降为O(NK)。

随便推一下,

ANS(x)=Σ(p是1到x的一条路径) len(p)^k = Σ(h=1 to k) S(k,h) Σ(p是1到x的一条路径)P(len(p),h)= Σ(h=1 to k) S(k,h)*h!*Σ(p是1到x的一条路径)C(len(p),h)。

所以我们设now[x][i]=Σ(p是1到x的一条路径)C(len(p),i)。

因为保证了是个DAG且1可以到达所有节点,所以图中只有1的入度是0,然后我们直接从1开始拓扑排序就行了。

需要注意的是因为这个题只是求1到x的路径,所以除了now[1][0],其他的now[x][0]一开始都是0,而不像昨天的那个题是求树上任意一个其他点到它的路径。

(总感觉我脸黑常熟大的样子,如图)

code:

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cmath>
#define ll long long
#define maxn 100005
#define ha 998244353
#define pb push_back
using namespace std;
vector<int> g[maxn];
int ans,n,k,m,id[maxn];
int S[][],jc[];
int q[maxn],hd=,tl=;
int now[maxn][]; inline void init(){
S[][]=,jc[]=;
for(int i=;i<=;i++){
jc[i]=jc[i-]*(ll)i%ha;
for(int j=;j<=;j++) S[i][j]=((ll)S[i-][j-]+S[i-][j]*(ll)j)%ha;
}
} inline void solve(){
q[++tl]=,now[][]=;
int x,to;
while(hd<=tl){
x=q[hd++];
for(int i=g[x].size()-;i>=;i--){
to=g[x][i];
now[to][]+=now[x][];
if(now[to][]>=ha) now[to][]-=ha;
for(int j=;j<=k;j++){
now[to][j]+=now[x][j];
if(now[to][j]>=ha) now[to][j]-=ha;
now[to][j]+=now[x][j-];
if(now[to][j]>=ha) now[to][j]-=ha;
} if(!(--id[to])) q[++tl]=to;
}
}
} int main(){
freopen("xmasdag.in","r",stdin);
freopen("xmasdag.out","w",stdout); init(); scanf("%d%d%d",&n,&m,&k);
int uu,vv;
for(int i=;i<=m;i++){
scanf("%d%d",&uu,&vv);
g[uu].pb(vv),id[vv]++;
} // for(int i=1;i<=n;i++) now[i][0]=1;
solve(); for(int i=;i<=n;i++){
ans=;
for(int j=;j<=k;j++) ans=((ll)ans+S[k][j]*(ll)jc[j]%ha*(ll)now[i][j])%ha;
printf("%d\n",ans);
} return ;
}

最新文章

  1. powershell使用
  2. js 与 jq 的节点添加删除实例
  3. grep 信息提取
  4. sql server数据库连接问题处理
  5. PTA Iterative Mergesort
  6. noi题库(noi.openjudge.cn) 1.5编程基础之循环控制T36——T45
  7. 第二十一篇:SOUI中的控件注册机制
  8. [linux]crontab 命令执行问题
  9. android中ContentProvider获取联系人 总结
  10. 最小割 总结&amp;&amp;做题记录
  11. SSRS 迁移
  12. HDU 2196Computer(树形DP)
  13. js提交表单错误:document.form.submit() is not a function
  14. 【mysql】常用操作
  15. Ajax异步信息抓取方式
  16. Hibernate最佳实战
  17. win32: 静态控件(Static) - SS_NOTIFY - 响应事件
  18. git 出现 fatal: refusing to merge unrelated histories 错误
  19. C#解析&quot;a=1&amp;b=2&amp;c=3&quot;字符串,微信支付返回字符串,替换&lt;br&gt;为&amp;
  20. MySQL数据库中统计一个库中的所有表的行数?

热门文章

  1. CCC2018游记
  2. cnn 卷积神经网络 人脸识别
  3. react组件之间的几种通信情况
  4. charles https抓包
  5. kolakoski序列
  6. monkey测试===easyMonkey测试【推荐】
  7. OPENSOLARIS source
  8. Linux系统各发行版镜像下载(持续更新)
  9. 【数位dp入门】【HDU4734】F(x)
  10. js cookies的使用及介绍 (非常详细)