QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#848096 | #4229. GCD Harmony | HeyJinhwi# | WA | 3ms | 6368kb | C++14 | 2.2kb | 2025-01-08 15:36:38 | 2025-01-08 15:36:39 |
Judging History
answer
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <iostream>
#include <vector>
using namespace std;
int dp[5001][101],dp2[5001][101],a[5050];
vector<int> adj[5010];
vector<int> thdlstn[10001];
int gcd(int a,int b)
{
if(!b)return a;
return gcd(b,a%b);
}
int n;
void dfs(int k,int p)
{
for(int i=0;i<adj[k].size();i++)
{
if(adj[k][i]!=p)dfs(adj[k][i],k);
}
for(int i=2;i<=10000;i++)
{
int ans=0;
int cur;
for(int j=0;j<adj[k].size();j++)
{
if(adj[k][j]==p)continue;
cur=100000;
for(int l=0;l<thdlstn[i].size();l++)
{
if(thdlstn[i][l]>100)continue;
cur=min(cur,dp[adj[k][j]][thdlstn[i][l]]);
}
ans+=cur;
}
if(i!=a[k])ans+=i;
for(int j=0;j<thdlstn[i].size();j++)
{
if(thdlstn[i][j]>100)continue;
if(dp2[k][thdlstn[i][j]]==-1)
{
dp2[k][thdlstn[i][j]]=ans;
}
else
{
dp2[k][thdlstn[i][j]]=min(dp2[k][thdlstn[i][j]],ans);
}
}
}
for(int i=2;i<=100;i++)dp[k][i]=dp2[k][i];
}
int main()
{
for(int i=2;i<=10000;i++)
{
int t=i;
for(int j=2;j<=100;j++)
{
if(t%j==0)
{
thdlstn[i].push_back(j);
while(t%j==0)t/=j;
}
}
if(t!=1)thdlstn[i].push_back(t);
}
freopen("input.txt","r",stdin);
int n;cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=100;j++)dp2[i][j]=-1;
}
for(int i=1;i<=n;i++)
{
cin>>a[i];
for(int j=2;j<=1000;j++)
{
if(a[i]!=j)dp[i][j]=j;
}
for(int j=0;j<thdlstn[a[i]].size();j++)
{
dp[i][thdlstn[a[i]][j]]=0;
}
}
for(int i=1;i<n;i++)
{
int a,b;cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(1,0);
int ans=2*n;
for(int i=2;i<=100;i++)if(dp[1][i]!=-1)ans=min(ans,dp[1][i]);
cout<<ans;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 3ms
memory: 6368kb
input:
6 5 6 3 4 9 12 1 2 1 3 1 4 1 6 3 5
output:
0
result:
wrong answer 1st lines differ - expected: '6', found: '0'