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
走同样的路,发现不同的人生