1.pat 1021 deepest root 第4个测试点无法通过
2.代码:跟参考答案代码基本一致,只是变量名变了而已;求大神指出代码中无法通过测试的原因!谢谢
#include
#include
#include
using namespace std;
const int maxn=100010;
vector adj[maxn];
bool root[maxn];
int father[maxn];
void init(int n)
{
for(int i=1;i<=n;++i)
{
father[i]=i;
}
}
int findfather(int x)
{
int a=x;
while(x!=father[x])
{
x=father[x];
}
while(a!=father[a])
{
int temp=a;
a=father[a];
father[temp]=x;
}
return x;
}
void sunion(int a, int b)
{
int fa=father[a];
int fb=father[b];
if(fa!=fb) father[fb]=fa;
}
int blockcount(int n)
{
int block=0;
for(int i=1;i<=n;++i)
{
//int rt=findfather(i);
root[findfather(i)]=true;
}
for(int i=1;i<=n;++i)
{
block+=root[i];
}
return block;
}
int maxheight=0;
vector tempdeepest, ans;
void dfs(int vt, int height, int pre)
{
if(height>maxheight)
{
tempdeepest.clear();
tempdeepest.push_back(vt);
maxheight=height;
}
else if(height==maxheight)
tempdeepest.push_back(vt);
for(int i=0;i

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
走同样的路,发现不同的人生