社区讨论
P3884 WA#1 求助
学术版参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo1vfl1x
- 此快照首次捕获于
- 2023/10/23 03:38 2 年前
- 此快照最后确认于
- 2023/11/03 04:07 2 年前
错误信息显示二叉树宽度输出错误。
CPP#include<bits/stdc++.h>
using namespace std;
struct data{int d,l,r;}w[100];
int n,x,y,a[101][101],s[101],ans1,ans2;
void deep(int k,int f)//求深度
{
if(w[k].l) deep(w[k].l,f+1);
if(w[k].r) deep(w[k].r,f+1);
ans1=max(ans1,f);
return;
}
int main()
{
memset(a,0x3f,sizeof(a));
cin>>n;
w[1].d=1;
for(int i=1;i<n;i++)
{
cin>>x>>y;
a[x][y]=1;
a[y][x]=2;
w[y].d=w[x].d+1;//宽度为这个点的父亲的深度+1
if(w[x].l==0) w[x].l=y;//记录一下两个节点
else w[x].r=y;
}
deep(1,1);
for(int i=1;i<=n;i++) s[w[i].d]++;//统计这个深度有几个节点
for(int i=1;i<=n;i++) ans2=max(ans2,s[i]);
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);//Floyd
cin>>x>>y;
cout<<ans1<<endl<<ans2<<endl<<a[x][y];
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...