暴力dp 0pts求调 悬赏1关注
查看原帖
暴力dp 0pts求调 悬赏1关注
743811
Shakespeare07楼主2022/10/14 17:59

rt.

#include<bits/stdc++.h>
using namespace std;
#define mod 2017
#define il inline
#define re register

il int read(){
	int s=0,w=1;char c=getchar();
	while(!isdigit(c)){ if(c=='-') w=-1;c=getchar();}
	while(isdigit(c)){ s=(s<<3)+(s<<1)+(c^48);c=getchar();};
	return s*w;
}

#define N 1000005
int n,m,e,to[1000],ne[1000],h[1000];
int dp[N][32];

il void add(re int x,re int y){
	to[++e]=y,ne[e]=h[x],h[x]=e;
}

int T;

signed main(){
	n=read(),m=read();
	for(re int i=1;i<=m;++i){
		int x=read(),y=read();
		add(x,y),add(y,x);
	}
	for(re int i=1;i<=n;++i) add(i,n+1);
	for(re int i=1;i<=n+1;++i) add(i,i);
	
	T=read();
	
	dp[1][0]=1;
	for(re int t=0;t<=T;++t){
		for(re int x=1;x<=n+1;++x){
			for(re int j=h[x];j;j=ne[j]){
				int y=to[j];
				dp[y][t+1]+=dp[x][t];
				dp[y][t+1]%=mod;
			}
		}
	}
	
	int ans=0;
	for(int i=1;i<=n+1;i++){
		ans=(ans+dp[i][T])%mod;
	}
	
	printf("%d\n",ans);
	
	return 0;
}
2022/10/14 17:59
加载中...