RE&WA&MLE 求助
查看原帖
RE&WA&MLE 求助
565378
Orange1015楼主2023/3/28 19:17

0pts求调

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1005
#define mod 2017
#define int long long

int tot;
int n,m,k,tmp,ans=0;
struct Matrix{
	int a[MAXN][MAXN];
}l,x,y;
Matrix mul(Matrix x,Matrix y){
	Matrix res;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++) res.a[i][j]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				res.a[i][j]=(res.a[i][j]+x.a[i][k]*y.a[k][j])%mod;
			}
		}
	}
	return res;
}
Matrix fpow(Matrix A,int b){
	Matrix res,aa=A;
	for(int i=0;i<=101;i++) res.a[i][i]=1;
	while(b){
		if(b&1) res=mul(res,aa);
		aa=mul(aa,aa);
		b>>=1;
	}
	return res;
}

signed main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	memset(l.a,0,sizeof(l.a));
	cin >> n >> m >> k;
	for(int i=1;i<=m;i++){
		int u,v;
		cin >> u >> v;
		l.a[u][v]=1;
		l.a[v][u]=1;
	}
	for(int i=1;i<=n;i++){
		l.a[n+1][i]=1;
		l.a[i][n+1]=1;
		y.a[i][1]=0;
	}
	y.a[1][1]=1;
	y.a[n+1][1]=0;
	l.a[n+1][n+1]=1;
	x=mul(fpow(l,k+1),y);
	for(int i=1;i<=n+1;i++){
		ans+=x.a[i][1];
	}
	cout << ans;
	return 0;
}
2023/3/28 19:17
加载中...