QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#576084 | #6437. Paimon's Tree | Harry27182 | WA | 154ms | 7956kb | C++14 | 1.9kb | 2024-09-19 18:18:56 | 2024-09-19 18:18:56 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
int dep[155],dp[155][155][155],T,n,h[155],u,v,w[155],f[155];
int siz[155],num[155][155],deg[155],cnt,dis[155][155];
struct edge{int v,nxt;}e[305];vector<pair<int,int> >g[155];
void add(int u,int v){e[++cnt]={v,h[u]};h[u]=cnt;}
void dfs(int u,int fa,int s)
{
dis[s][u]=dis[s][fa]+1;
for(int i=h[u];i;i=e[i].nxt)
{
int v=e[i].v;
if(v==fa)continue;
dfs(v,u,s);
}
}
void dfs2(int u,int fa)
{
dep[u]=dep[fa]+1;siz[u]=1;f[u]=fa;
for(int i=h[u];i;i=e[i].nxt)
{
int v=e[i].v;
if(v==fa)continue;
dfs2(v,u);siz[u]+=siz[v];
}
}
signed main()
{
cin.tie(0)->sync_with_stdio(0);
cin>>T;
while(T--)
{
cin>>n;n++;int ans=0;cnt=0;
for(int i=1;i<n;i++)cin>>w[i];
for(int i=1;i<=n;i++)h[i]=0;
for(int i=1;i<n;i++)
{
cin>>u>>v;
add(u,v);add(v,u);
}
for(int i=0;i<=n;i++)g[i].clear();
for(int i=1;i<=n;i++)
{
dis[i][0]=-1;dfs(i,0,i);
for(int j=1;j<=n;j++)g[dis[i][j]].emplace_back(make_pair(i,j));
}
dfs2(1,0);
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=0;k<n;k++)dp[i][j][k]=-0x3f3f3f3f3f3f3f3f;
for(int i=1;i<=n;i++)dp[i][i][0]=0;
for(int i=0;i<=n;i++)
{
for(int j=0;j<g[i].size();j++)
{
int u=g[i][j].first,v=g[i][j].second;
for(int k=0;k<n;k++)
{
if(k+1<n)dp[u][v][k+1]=max(dp[u][v][k+1],dp[u][v][k]);
for(int p=h[u];p;p=e[p].nxt)
{
int now=n-1-(dep[e[p].v]>dep[v]?siz[e[p].v]:n-siz[v]);
if(dis[e[p].v][v]==i+1&&k<=now)dp[e[p].v][v][k+1]=max(dp[e[p].v][v][k+1],dp[u][v][k]+w[k+1]);
}
for(int p=h[v];p;p=e[p].nxt)
{
if(dis[u][e[p].v]==i+1)dp[u][e[p].v][k+1]=max(dp[u][e[p].v][k+1],dp[u][v][k]+w[k+1]);
}
}
}
}
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ans=max(ans,dp[i][j][n-1]);
cout<<ans<<'\n';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5784kb
input:
2 5 1 7 3 5 4 1 3 2 3 3 4 4 5 4 6 1 1000000000 1 2
output:
16 1000000000
result:
ok 2 number(s): "16 1000000000"
Test #2:
score: -100
Wrong Answer
time: 154ms
memory: 7956kb
input:
5000 19 481199252 336470888 634074578 642802746 740396295 773386884 579721198 396628655 503722503 971207868 202647942 2087506 268792718 46761498 443917727 16843338 125908043 691952768 717268783 9 4 4 18 12 9 10 9 4 1 6 12 2 18 9 13 6 14 4 8 2 3 10 17 2 20 19 20 5 1 12 15 15 16 4 7 17 11 4 240982681 ...
output:
5750811120 1896999359 4208559611 4140156713 5361004844 1875024569 3690026656 3702623113 3412485417 7807375141 5341435147 2355946110 3090496776 5626636202 4729664767 2207592767 572868833 4759005973 2944749369 2538044586 3083947956 5757497518 1421427135 3971435093 1197051728 396588615 251138097 221986...
result:
wrong answer 48th numbers differ - expected: '5317528311', found: '5514819848'