QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#107532#5573. Holiday RegiftingsanweiTL 2ms3732kbC++141.1kb2023-05-21 20:16:502023-05-21 20:16:54

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-21 20:16:54]
  • 评测
  • 测评结果:TL
  • 用时:2ms
  • 内存:3732kb
  • [2023-05-21 20:16:50]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

#define int long long

const int maxn=1e4+100;
const int mod=998244353;

int n,m,c[maxn],a[maxn],in[maxn],vis[maxn],f[maxn];
vector<int>g[maxn],topo;
queue<int>Q;


void dfs(int x){
	vis[x]=1;
	for(auto y:g[x])dfs(y);
}

inline void update(){
	for(auto x:topo){
		int k=f[x]/c[x];
		for(auto y:g[x])if(vis[y]){
			f[y]+=k;
		}
		f[x]%=c[x];
	}
}

signed main(void){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;++i)cin>>c[i];
	while(m--){
		int u,v;cin>>u>>v;
		g[u].push_back(v);
	}
	dfs(1);
	for(int i=1;i<=n;++i)if(vis[i]){
		for(auto y:g[i])if(vis[y])++in[y];
	}
	Q.push(1);
	while(Q.size()){
		int x=Q.front();Q.pop();
		topo.push_back(x);
		for(auto y:g[x])if(vis[y]){
			--in[y];
			if(in[y]==0)Q.push(y);
		}
	}
	f[1]=c[1];
	int ans=c[1];
	update();
	for(int ii=1;ii<topo.size();++ii){
		int x=topo[ii];
		if(f[x]==0)continue;
		int p=c[x]/__gcd(f[x],c[x]);
		ans=ans*p%mod;
		for(int i=1;i<=n;++i)f[i]*=p;
		update();
	}
	cout<<ans;
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3668kb

input:

5 10
4 3 2 2 2
1 3
3 4
1 4
1 5
2 5
2 4
1 2
2 3
3 5
4 5

output:

24

result:

ok 1 number(s): "24"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3660kb

input:

3 0
95 13 77

output:

95

result:

ok 1 number(s): "95"

Test #3:

score: 0
Accepted
time: 2ms
memory: 3732kb

input:

12 14
6 7 17 16 20 14 17 16 6 11 6 14
4 11
3 5
2 5
9 11
7 12
1 3
5 9
3 7
3 8
4 9
1 9
4 7
2 11
1 12

output:

8739360

result:

ok 1 number(s): "8739360"

Test #4:

score: 0
Accepted
time: 2ms
memory: 3652kb

input:

1 0
2

output:

2

result:

ok 1 number(s): "2"

Test #5:

score: 0
Accepted
time: 2ms
memory: 3612kb

input:

50 97
2 2 2 2 2 11 13 7 2 2 2 2 2 2 5 2 5 2 3 2 2 2 2 2 2 2 2 13 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
17 26
17 24
17 38
15 28
23 28
45 50
16 28
7 37
7 31
5 28
2 28
13 28
6 40
3 40
3 7
44 46
11 40
12 28
15 29
15 17
28 49
5 48
6 19
28 41
7 17
27 28
33 38
26 28
2 39
32 40
8 17
17 28
28 42
6 46
2...

output:

68640

result:

ok 1 number(s): "68640"

Test #6:

score: -100
Time Limit Exceeded

input:

500 30000
109 118 125 106 124 114 125 118 110 113 121 132 102 113 117 118 131 104 113 116 113 114 98 134 123 135 124 124 105 105 98 108 118 109 105 117 109 104 109 116 100 112 106 109 113 103 113 108 111 97 125 96 102 106 130 107 111 94 124 104 109 113 101 100 95 105 101 100 106 100 106 86 105 83 11...

output:


result: