#include <bits/stdc++.h>
using namespace std;
int f[1005],l[1005],n,m,t;
vector<int>lb[1005];
int fd(int x){
if(f[x]==x)return x;
else return f[x]=fd(f[x]);
}
void hb(int i,int j){
if(fd(i)!=fd(j)){
l[fd(j)]+=l[fd(i)];
f[fd(i)]=fd(j);
}
}
int main(){
//freopen("black.in","r",stdin);
//freopen("black.out","w",stdout);
cin>>n;
for(int j=1;j<=n;j++){
cin>>m;
for(int i=1;i<=m;i++){
cin>>t;
lb[j].push_back(t);
lb[t].push_back(j);
}
}
for(int i=1;i<=n;i++){
f[i]=i;
l[i]=1;
}
for(int k=n;k>=1;k--){
for(int i:lb[k])if(i>k)hb(k,i);
if(l[fd(k)]>n/2){
cout<<k;
return 0;
}
}
}
大家都知道,这个代码输入以下数据:
7
2 2 5
3 1 3 4
2 2 4
2 2 3
3 1 6 7
2 5 7
2 5 6
是会输出1的,这个样例能过但是它在老师那边测出来了 CE,是for(int i:lb[k])的问题,于是我把它改成了for(size_t i=0;i<lb[k].size();i++),输出了2!
求问这是怎么回事,该改成什么?玄小号一关