PAT A급 1107 Social Clusters(30점)(및 조회)
11607 단어 pat 등급함께 조사하여 모으다
사고방식: 제목에서 두 사람이 임의로 같은 취미를 가지면 그들은 한 조로 나눌 수 있기 때문에 각 취미에 대응하는 사람을 기록할 수 있다. (취미는 여러 사람에게 대응할 수 있지만 여기에 마음대로 기록하면 된다. 있으면 나중에 합병할 수 있다) 그 다음에 모든 사람의 흥미를 두루 훑어보고 취미에 대응하는 사람에 따라 합병하면 된다. 구체적으로 코드를 참고하자.
코드:
#include
using namespace std;
const int maxn = 1005;
int ans[maxn];
int cnt[maxn];
int p[maxn];
vector <int> v[maxn];
int mfind(int u) {
return p[u] == u ? u : p[u] = mfind(p[u]);
}
int main() {
int n;
scanf("%d" , &n);
for(int i = 1 ; i <= n ; i++)p[i] = i;
for(int i = 1 ; i <= n ; i++) {
int t;
scanf("%d:" , &t);
while(t--) {
int num;
scanf("%d" , &num);
cnt[num] = i;
v[i].push_back(num);
}
}
for(int i = 1 ; i <= n ; i++) {
for(int j = 0 ; j < v[i].size() ; j++) {
int x = cnt[v[i][j]]; x = mfind(x);
int y = mfind(i);
if(x != y) {
p[x] = y;
}
}
}
int res = 0;
for(int i = 1 ; i <= n ; i++) {
int u = mfind(i);
if(!ans[u])res++;
ans[u]++;
}
sort(ans + 1 , ans + n + 1 );
printf("%d
" , res);
for(int i = n ; i >= n - res + 1 ; i--) {
if(i < n)printf(" ");
printf("%d" , ans[i]);
}
printf("
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2018 우객다교 제4회 J문제 Hash Function(사고+병렬조사집)Chiaki has just learned hash in today's lesson. A hash function is any function that can be used to map data of arbitrar...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.