社区讨论
蒟蒻求问:程序遇到未知警告,但是可以运行
学术版参与者 5已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @lo37tya7
- 此快照首次捕获于
- 2023/10/24 02:12 2 年前
- 此快照最后确认于
- 2023/10/24 02:12 2 年前
本蒟蒻在写P3884 [JLOI2009]二叉树问题时遇到了问题,在本地编译器中可以编译,但是会有警告(下图)
我去百度上搜了一下,没有找到相似的解答,望各位大佬能够帮帮蒟蒻QWQ
我去百度上搜了一下,没有找到相似的解答,望各位大佬能够帮帮蒟蒻QWQ这里贴上源码:
CPP#include<bits/stdc++.h>
using namespace std;
int n;
int cen[114];
struct node{
int cens=0;
int father=0;
int left=0;
int right=0;
}tree[114514];
void add(int a,int b)
{
if (tree[a].left==0) tree[a].left=b;
else tree[a].right=b;
tree[b].father=a;
}
void chuli(int place)
{
tree[place].cens=tree[tree[place].father].cens+1;
cen[tree[place].cens]++;
if (tree[place].left) chuli(tree[place].left);
if (tree[place].right) chuli(tree[place].right);
}
void que1()
{
for (int i=100;i>0;i--)
{
if (cen[i])
{
cout<<i<<endl;
return;
}
}
}
void que2()
{
int ans=0;
for (int i=1;i<=100;i++)
{
ans=max(ans,cen[i]);
}
cout<<ans<<endl;
}
void que3(int x,int y)
{
int ans=abs(tree[x].cens-tree[y].cens);
if (tree[x].cens>tree[y].cens)
{
for (int i=1;i<=ans;i++)
{
x=tree[x].father;
}
}
else
{
for (int i=1;i<=ans;i++)
{
y=tree[y].father;
}
}
ans*=2;
// cout<<ans<<" ";
while(1)
{
if (x==y)
{
cout<<ans<<endl;
return;
}
// cout<<ans<<" ";
ans+=3;
x=tree[x].father;
y=tree[y].father;
}
}
int main()
{
cin>>n;
for (int i=0;i<114;i++)cen[i]=0;
for (int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
}
chuli(1);
// for (int i=1;i<=n;i++)
// {
// cout<<i<<"cens:"<<tree[i].cens<<" father:"<<tree[i].father<<" left:"<<tree[i].left<<" right:"<<tree[i].right<<endl;
// }
int x,y;
cin>>x>>y;
que1();
que2();
que3(x,y);
return 0;
}
回复
共 9 条回复,欢迎继续交流。
正在加载回复...