求教!为什么这段代码还没读入就运行错误了???
  • 板块学术版
  • 楼主qyz123123
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/29 08:14
  • 上次更新2023/11/3 00:35:48
查看原帖
求教!为什么这段代码还没读入就运行错误了???
658726
qyz123123楼主2023/8/29 08:14
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;

#define int long long
const int N = 505;
int n, k, m;
struct matrix{
    int a[N][N];
}ans, base;


matrix operator*(const matrix a, const matrix b)
{
   	matrix c;
   	memset(c.a, 0, sizeof (c.a));
   	for (int i=0; i<=n; ++i){
   		for (int j=0; j<=n; ++j){
   			for (int k=0; k<=n; ++k){
    		    c.a[i][j] += a.a[i][k]*b.a[k][j];
			}
		}
	}
	return c;
}

inline int read()
{
	int x=0, f=1; char c=getchar();
	while (!(c>='0' && c<='9')){if (c=='-') f=-1; c=getchar();}
	while (c>='0' && c<='9'){x=(x<<3)+(x<<1)+c-48; c=getchar();}
	return f*x;
}

signed main()
{
    n=read(), k=read(), m=read();
    for (int i=0; i<=n; ++i) base.a[i][i] = ans.a[i][i] = 1;
	for (int i=0; i<=k; ++i){
		char s[3];
		int x, y;
		scanf("%s", s);
		if (s=="G"){
		    x=read(), y=read();
		    base.a[n][x-1] += y;
		}
		else if (s=="B"){
			x=read();
			for (int j=0; j<=n; ++j) base.a[j][x-1] = 0;
		}
		else {
			x=read(), y=read();
			for (int j=0; j<=n; ++j) swap(base.a[j][x-1], base.a[j][y-1]);
		}
	}
	while (k){
		if (k&1)
		    ans = ans*base;
		k >>= 1;
		base = base*base;
	}
	for (int i=0; i<n; ++i) printf("%lld ", ans.a[n][i]);
	return 0;
}

2023/8/29 08:14
加载中...