社区讨论
所以为什么 cf 运行结果和本地不一样???
学术版参与者 5已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mkmovvi1
- 此快照首次捕获于
- 2026/01/20 22:28 4 周前
- 此快照最后确认于
- 2026/01/24 15:00 4 周前
CF1009F 中,我提交了如下代码:
CPP#include<bits/stdc++.h>
using namespace std;
int n,h[1000005],son[1000005],f[1000005],ans[1000005];
vector<int> t[1000005],w[1000005];
void dfs1(int x,int fa){
f[x]=fa;
for(auto it:w[x]){
if(it==fa)continue;
dfs1(it,x);
if(h[it]>=h[son[x]])son[x]=it,h[x]=h[it]+1;
}
}
void dfs2(int x){
if(son[x]){
dfs2(son[x]);
swap(t[x],t[son[x]]);
t[x].push_back(1);
ans[x]=ans[son[x]];
if(t[x][ans[x]]==1)ans[x]=h[x];
for(auto it:w[x]){
if(it==f[x]||it==son[x])continue;
dfs2(it);
for(int i=h[x];i>=0;i--){
int tt=i+h[x]-h[it]-1;
t[x][tt]+=t[it][i];
if(t[x][tt]>t[x][ans[x]]||(t[x][tt]==t[x][ans[x]]&&tt>ans[x]))ans[x]=tt;
}
}
}else{
t[x].push_back(1);
ans[x]=0;
}
}
int main(){
cin>>n;
for(int i=1,x,y;i<n;i++){
cin>>x>>y;
w[x].push_back(y);
w[y].push_back(x);
}
dfs1(1,0);
dfs2(1);
for(int i=1;i<=n;i++)cout<<h[i]-ans[i]<<"\n";
return 0;
}
本地和洛谷测样例 2 能过,但是 cf 上 ....
https://codeforces.com/contest/1009/submission/358936261
求问为什么?
回复
共 6 条回复,欢迎继续交流。
正在加载回复...