C++11 UVA的DSU问题正在给WA裁决。我不知道';我不明白为什么。有人能帮忙吗?

C++11 UVA的DSU问题正在给WA裁决。我不知道';我不明白为什么。有人能帮忙吗?,c++11,data-structures,graph,disjoint-sets,disjoint-union,C++11,Data Structures,Graph,Disjoint Sets,Disjoint Union,这是问题链接。 对于m个小组中的每一个,我都让小组中的所有学生联合起来。最后,对于从0到n-1的每个学生,我计算了他们中有多少人的家长等于0。结果打印出来了。在union函数中,我总是将较小的数字作为父项,以便最终0成为父项 这对我来说是显而易见的。但不知道为什么下面的代码是givng WA:( #包括 使用名称空间std; #定义ll long long 国际标准杆[30005]; 整数查找(整数u){ 如果(u==par[u])返回u; 返回par[u]=查找(par[u]); } 无效联

这是问题链接。

对于m个小组中的每一个,我都让小组中的所有学生联合起来。最后,对于从0到n-1的每个学生,我计算了他们中有多少人的家长等于0。结果打印出来了。在union函数中,我总是将较小的数字作为父项,以便最终0成为父项

这对我来说是显而易见的。但不知道为什么下面的代码是givng WA:(

#包括
使用名称空间std;
#定义ll long long
国际标准杆[30005];
整数查找(整数u){
如果(u==par[u])返回u;
返回par[u]=查找(par[u]);
}
无效联合号(整数u,整数v){
int p=查找(u);
int q=查找(v);
如果(q>n>>m;
如果(n==0&&m==0)中断;
对于(int i=0;i>k;
int a[k];
对于(int i=0;i>a[i];

for(inti=1;iHello,欢迎使用堆栈溢出!在当前状态下,这个问题可能很难回答或不希望回答(请参阅,即使这不是家庭作业,它也遵循该格式)。如果您可以包含与您的程序生成的相关输出不兼容的特定测试用例,甚至尝试生成一个最小的可复制示例,您可能会看到对您的问题的更多响应。我不知道DSU的问题是什么,我也不打算通过外部网站搜索以查找更多详细信息。您需要解释你的代码的功能和你试图解决的问题。
    #include<bits/stdc++.h>
using namespace std;

#define ll long long
int par[30005];

int find(int u) {
  if (u==par[u]) return u;
  return par[u]=find(par[u]);
}

void unionn(int u,int v) {
  int p=find(u);
  int q=find(v);
  if (q<p) swap(q,p);
  if (p!=q) par[q]=p;
}
  

int main() {
  ios_base::sync_with_stdio(0);

  /*freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);*/

  while (1) {
    int n,m; cin>>n>>m;
    if (n==0&&m==0) break;  
    for (int i=0;i<n;i++) par[i]=i;
    while (m--) {
      int k; cin>>k;
      int a[k];
      for (int i=0;i<k;i++) cin>>a[i];
      for (int i=1;i<k;i++) unionn(a[i],a[i-1]);     
    }
    int res=0;
    for (int i=0;i<n;i++) {
      if (par[i]==0) res++;
    }
    cout<<res<<endl;
  }
   

  
  return 0; 
}