蒟蒻 10 分求助
查看原帖
蒟蒻 10 分求助
195331
Mine_KingCattleya楼主2021/7/9 15:10

RT,只过了 #5 和 #12,其他全 WA,求万能的谷民帮我调一调吧/kel

#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define int long long
using namespace std;

const int mod=998344353;

int n,a[100005],m;
struct func
{
	int opt,p,v,mul,num;
}t[100005];
int Q,f[100005];

struct graph
{
	int tot;
	int hd[100005];
	int nxt[1000005],to[1000005];
	void add(int u,int v)
	{
		nxt[++tot]=hd[u];
		hd[u]=tot;
		to[tot]=v;
		return ;
	}
}g;
int in[100005];
queue<int>q;
int cnt,top[100005];
int mult=1;

void topsort()
{
	for(int i=1;i<=m;i++)
		if(!in[i]) q.push(i);
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		top[++cnt]=x;
		for(int i=g.hd[x];i;i=g.nxt[i])
			if(!--in[g.to[i]]) q.push(g.to[i]);
	}
	return ;
}
void getmul()
{
	for(int i=m;i>=1;i--)
		for(int j=g.hd[top[i]];j;j=g.nxt[j])
			t[top[i]].mul=1ll*t[top[i]].mul*t[g.to[j]].mul%mod;
	return ;
}
void getsum()
{
	for(int i=1;i<=m;i++)
	{
		int multt=1;
		for(int j=g.hd[top[i]];j;j=g.nxt[j])
		{
			t[g.to[j]].num=(t[g.to[j]].num+t[top[i]].num*multt%mod)%mod;
			multt=1ll*multt*t[g.to[j]].mul%mod;
		}
	}
	return ;
}

signed main()
{
	// freopen("call3.in","r",stdin);
	// freopen("call.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	scanf("%lld",&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%lld",&t[i].opt);
		if(t[i].opt==1) scanf("%lld%lld",&t[i].p,&t[i].v),t[i].mul=1;
		else if(t[i].opt==2) scanf("%lld",&t[i].mul);
		else
		{
			t[i].mul=1;
			int len;
			scanf("%lld",&len);
			for(int j=1;j<=len;j++)
			{
				int x;
				scanf("%lld",&x);
				g.add(i,x);
				in[x]++;
			}
		}
	}
	topsort();
	getmul();
	scanf("%lld",&Q);
	for(int i=1;i<=Q;i++) scanf("%lld",&f[i]);
	for(int i=Q;i>=1;i--)
	{
		t[f[i]].num=(t[f[i]].num+mult)%mod;
		mult=1ll*mult*t[f[i]].mul%mod;
	}
	getsum();
	for(int i=1;i<=n;i++) a[i]=a[i]*mult%mod;
	for(int i=1;i<=m;i++)
		if(t[i].opt==1)
			a[t[i].p]=(a[t[i].p]+t[i].v*t[i].num%mod)%mod;
	for(int i=1;i<=n;i++) printf("%lld ",a[i]);
	return 0;
}
2021/7/9 15:10
加载中...