蒟蒻求助:过不了样例

P3958 [NOIP2017 提高组] 奶酪

@[foxifigo0](/user/393076) 锅有一点点多,这里直接给代码了 ```cpp #include<bits/stdc++.h> #define int long long using namespace std; int t,n[24],h[24],r[24],x[20002],y[20002],z[20002]; int f[20020]; vector<int> out[2]; int find(int k){ if(f[k] == k)return k; return f[k] =find(f[k]); } int pp(int x){ return x * x; } signed main(){ cin >> t; for(int k = 0;k < t;k++){ bool ye = 1; while(!out[0].empty()){ out[0].pop_back(); } while(!out[1].empty()){ out[1].pop_back(); } cin >> n[k] >> h[k] >> r[k]; for(int j = 0;j < n[k];j++){ f[j] = j; } for(int i = 0;i < n[k];i++){ cin >> x[i] >> y[i] >> z[i]; if(z[i] + r[k] >= h[k] && z[i] - r[k] <= 0&& ye){ cout << "Yes" << endl; ye = 0; } if(z[i] - r[k] <= 0){ out[0].push_back(i); } else if(z[i] + r[k] >= h[k]){ out[1].push_back(i); } } for(int i = 0;i < n[k];i++){ for(int j = 0;j < n[k];j++){ if(pp(x[i] - x[j]) + pp(y[i] - y[j]) + pp(z[i] - z[j]) <= pp(2*r[k])){ f[find(i)] = find(j); } } } for(int i = 0;i < out[0].size();i++){ for(int j = 0;j < out[1].size();j++){ if(find(out[0][i]) == find(out[1][j]) && ye){ cout << "Yes" << endl; ye = 0; } } } if(ye){ cout << "No" << endl; } } } ```
by Liuyuzhuo @ 2022-07-27 11:37:36


@[Liuyuzhuo](/user/221575) 谢谢大佬!
by TLE_ @ 2022-07-29 11:00:38


|