PTA 7 - 2 모멘트 (25 점)
입력 형식:
입력 한 첫 줄 은 두 개의 정수 N (≤ 30000) 과 M (≤ 1000) 을 포함 하고 각각 학교의 학생 총수 와 클럽 의 개 수 를 대표 한다.뒤의 M 줄 은 각 줄 마다 다음 과 같은 형식 으로 1 개의 클럽 의 정 보 를 제공 하 는데 그 중에서 학생 들 은 1 ~ N 번호 에서
i Mi( ) 1( ) 2 … Mi
출력 형식:
출력 은 최대 친구 권 에 몇 명 이 있 는 지 를 나타 내 는 정 수 를 보 여 줍 니 다.
입력 예시:
7 4
3 1 2 3
2 1 4
3 5 6 7
1 6
출력 예시:
4
가장 일반적인 것 을 수집 하여 문 제 를 풀다.
코드 는 다음 과 같 습 니 다:
#include
using namespace std;
typedef struct node
{
int data;
int rank;
int parent;
}UFSTree;
void MAKE_SET(UFSTree t[], int n)
{
int i;
for (i = 0; i <= n; i++)
{
t[i].data = i;
t[i].rank = 0;
t[i].parent = i;
}
}
int FIND_SET(UFSTree t[], int x)
{
if (x != t[x].parent)
return(FIND_SET(t, t[x].parent));
else
return x;
}
void UNION(UFSTree t[], int x, int y)
{
x = FIND_SET(t, x);
y = FIND_SET(t, y);
if (t[x].rank > t[y].rank)
t[y].parent = x;
else
{
t[x].parent = y;
if (t[x].rank == t[y].rank)
t[y].rank++;
}
}
int main()
{
int N, M;
cin >> N >> M;
UFSTree P[30001];
MAKE_SET(P, N);
for (int i = 0; i < M; i++)
{
int n,M[30001];
cin >> n >> M[0];
for (int j = 1; j < n; j++)
{
cin >> M[j];
UNION(P, M[j - 1], M[j]);
}
}
int Max[30001] = { 0 };
for (int k = 1; k <= N; k++)
Max[FIND_SET(P, k)]++;
int MA = 0;
for (int p = 1; p <= N; p++)
MA = MA > Max[p] ? MA : Max[p];
cout << MA;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
1052 Linked List Sorting(25점) 마지막 테스트 지점에서 세그먼트 오류 + 다른 사람의 코드1052 Linked List Sorting(25점) A linked list consists of a series of structures, which are not necessarily adjacent in me...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.