QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#518700#4229. GCD HarmonykngWA 2ms3928kbC++171.9kb2024-08-14 01:09:212024-08-14 01:09:22

Judging History

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

  • [2024-08-14 01:09:22]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:3928kb
  • [2024-08-14 01:09:21]
  • 提交

answer

#include<bits/stdc++.h>
#define For(i,n) for(int i=1;i<=n;++i)
#define maxn 5005
#define fi first
#define se second
#define inf 2000000000
#define lnf 2000000000000000000
#define _ push_back
#define ll long long
#define II pair<int,int>
#define III pair<II,int>
#define ve vector<int>
#define task 

using namespace std;

int dp[maxn][1400];
vector<int> adj[maxn];
int a[maxn];
int n;
vector<int> divi;
int e[maxn];
vector<int> snt;
vector<int> ntcn[26];
void dfs(int u, int dad) {
	for(int v:adj[u]) if(v!=dad) {
		dfs(v,u);
	}	
	for(int i=0;i<divi.size();++i) if(a[u]!=divi[i]) dp[u][i]=divi[i];
	for(int v:adj[u]) if(v!=dad){
		for(int i=0;i<snt.size();++i) {
			int kq=2*n;
			for(int j=0;j<ntcn[i].size();++j) {
				kq=min(kq,dp[v][ntcn[i][j]]);
			}
			for(int j=0;j<ntcn[i].size();++j) {
				dp[u][ntcn[i][j]] += kq;
			}
		}		
	}
}

void inp(){
	cin >> n;
	For(i,n)
		cin >> a[i];
	for(int i=1;i<n;++i) {
		int u, v;
		cin >> u >> v;
		adj[u]._(v);
		adj[v]._(u);
	}
}

void outp(){
	for(int i=1;i<=100;++i) {
		e[i]=i;
	}
	for(int i=2;i*i<=100;++i)
		if(e[i]==i)
			for(int j=i+i;j<=100;j+=i)
				e[j]=i;
	for(int i=2;i<=100;++i) if(e[i]==i) snt._(i);
	for(int i=2;i<=10000;++i) {
		int y=i;
		for(int x : snt) {
			if(y%x==0) y/=x;
		}
		if(y==1) divi._(i);
	}
	for(int i=1;i<=n;++i) {
		int y=a[i];
		int kw=1;
		while(y>1) {
			int p=e[y];
			while(y%p==0) y/=p;
			kw*=p;
		}
		a[i]=kw;
	}
	int kq=2*n;
	for(int i=0;i<snt.size();++i) {
		for(int j=0;j<divi.size();++j) if(divi[j]%snt[i]==0) ntcn[i]._(j);
	}
	dfs(1,0);
	for(int i=0;i<divi.size();++i) kq=min(kq,dp[1][i]);
	cout << kq;
}

int main(){
	if(fopen(task".inp","r")) {
		freopen(task".inp","r",stdin);
		freopen(task".out","w",stdout);
	}
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	inp();
	outp();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

6
5
6
3
4
9
12
1 2
1 3
1 4
1 6
3 5

output:

6

result:

ok single line: '6'

Test #2:

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

input:

3
1
2
3
3 1
2 3

output:

4

result:

ok single line: '4'

Test #3:

score: -100
Wrong Answer
time: 2ms
memory: 3908kb

input:

13
2
5
5
5
5
5
5
3
3
3
3
3
3
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13

output:

21

result:

wrong answer 1st lines differ - expected: '15', found: '21'