Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33853 liuyile 【S】T3 C++ 运行超时 90 1035 MS 265756 KB 1558 2024-10-24 13:56:02

Tests(18/20):


#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<short,short> #define p1(x) x.first #define p2(x) x.second short siz[3010][3010],d[3010][3010]; vector<int>g[5010]; ll f[3010][3010]; inline void dfs(int rt,int u,int fa){ siz[rt][u]=1; d[rt][u]=d[rt][fa]+1; for(int v:g[u])if(v!=fa){ dfs(rt,v,u); siz[rt][u]+=siz[rt][v]; } } int n; vector<pii>T[5010]; inline bool cmp(pii A,pii B){ return d[p1(A)][p2(A)]<d[p1(B)][p2(B)]; } signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("sample/luckyhowl5.in","r",stdin); // freopen("sample/luckyhowl5.out","w",stdout); cin>>n; for(int i=1;i<n;i++){ int u,v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } for(int i=1;i<=n;i++)dfs(i,i,0); for(int u=1;u<=n;u++) for(int v:g[u]) f[u][v]=1ll*siz[u][v]*siz[v][u]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) T[d[i][j]].push_back({i,j}); ll res=0; for(int i=1;i<=n;i++) for(pii e:T[i]){ int u=p1(e),v=p2(e); if(u==v)continue; res=max(res,f[u][v]); for(int p:g[u]) if(d[p][v]>d[u][v]) f[p][v]=max(f[p][v],f[u][v]+1ll*siz[p][v]*siz[v][p]); for(int p:g[v]) if(d[p][u]>d[u][v]) f[u][p]=max(f[u][p],f[u][v]+1ll*siz[u][p]*siz[p][u]); } cout<<res<<endl; cout.flush(); return 0; }


测评信息: