QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#613581 | #4229. GCD Harmony | Forever_Young# | TL | 223ms | 4572kb | C++14 | 1.5kb | 2024-10-05 14:16:25 | 2024-10-05 14:17:41 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int n,mi[5050][25],v[5050];
vector<int> pr,num,edge[5050];
void dfs(int fa,int x){
for (int i=0;i<edge[x].size();i++)
if (edge[x][i]!=fa) dfs(x,edge[x][i]);
num.push_back(v[x]);
for (int i=0;i<num.size();i++){
int tmp=0;
if (num[i]!=v[x]) tmp=num[i];
for (int j=0;j<edge[x].size();j++)
if (edge[x][j]!=fa){
int now_mi=100000;
for (int k=0;k<pr.size();k++)
if (num[i]%pr[k]==0) now_mi=min(now_mi,mi[edge[x][j]][k]);
tmp+=now_mi;
}
for (int j=0;j<pr.size();j++)
if (num[i]%pr[j]==0) mi[x][j]=min(mi[x][j],tmp);
}
num.pop_back();
}
int main(){
for (int i=2;i<=100;i++){
int f=1;
for (int j=2;j*j<=i;j++)
if (i%j==0) f=0;
if (f==1) pr.push_back(i);
}
for (int i=2;i<=10000;i++){
int tmp=i;
for (int j=0;j<pr.size();j++)
if (tmp%pr[j]==0){
tmp/=pr[j];
}
if (tmp==1) num.push_back(i);
}
memset(mi,0x7f,sizeof(mi));
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",&v[i]);
for (int i=1;i<n;i++){
int o,p;
scanf("%d%d",&o,&p);
edge[o].push_back(p);
edge[p].push_back(o);
}
for (int i=2;i<=100;i++) dfs(0,1);
int res=1000000;
for (int i=0;i<pr.size();i++) res=min(res,mi[1][i]);
printf("%d\n",res);
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 118ms
memory: 4484kb
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: 54ms
memory: 4572kb
input:
3 1 2 3 3 1 2 3
output:
4
result:
ok single line: '4'
Test #3:
score: 0
Accepted
time: 223ms
memory: 4416kb
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:
15
result:
ok single line: '15'
Test #4:
score: 0
Accepted
time: 162ms
memory: 4508kb
input:
9 2 5 5 5 5 3 3 3 3 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9
output:
14
result:
ok single line: '14'
Test #5:
score: 0
Accepted
time: 146ms
memory: 4488kb
input:
8 13 13 13 2 13 13 13 13 1 2 1 3 1 4 1 5 1 6 1 7 1 8
output:
13
result:
ok single line: '13'
Test #6:
score: -100
Time Limit Exceeded
input:
5000 59 25 51 26 33 99 2 13 29 58 5 47 96 83 63 22 69 89 41 90 20 97 85 90 55 17 54 75 54 24 90 54 74 78 81 77 2 47 68 18 60 81 99 86 7 6 76 43 17 43 92 25 36 26 47 100 63 66 2 16 47 25 48 86 24 2 10 42 44 80 92 48 49 21 49 40 32 85 53 88 15 30 4 27 77 16 6 80 50 56 46 14 3 48 92 50 93 35 69 29 48 4...