BRAVE 문제 막혔습니다. 도와주십쇼!

  • sjc1117
    sjc1117

    BRAVE

    • 쌍을 입력받을 때 마다 증가하도록 했습니다. 예제 문제와 제가 직접 테스트케이스를 입력해도 답은잘 뜨는것같습니다. 혹시 제가 생각하지 못한 예외상황이 있나요?
    #include <stdio.h>
    #include <string.h>
    
    int gold[100001];
    int conn[100001];
    int *p[100001];
    
    int max(int a, int b){return a>b?a:b;}
    
    int main()
    {
        int n, i, k;
        int nn;
        int mx;
        int n1, n2;
        int cnt;
    
        scanf("%d", &n);
    
        for(i=0; i<n; i++)
        {
            scanf("%d %d", &k, &nn);
    
            cnt=0;
            mx = 0;
    
            memset(gold, -1, sizeof(gold));
            memset(conn, 0, sizeof(conn));
    
            while(nn--)
            {
                scanf("%d %d", &n1, &n2);
    
                if(gold[n1] == -1 && gold[n2] == -1)
                {
                    gold[n1] = gold[n2] = cnt;
                    conn[cnt] += 2;
                    p[cnt] = &conn[cnt];
                    mx = max(mx, conn[cnt++]);
                }
                else if(gold[n1] > -1 && gold[n2] > -1)
                {
                    if(p[gold[n1]] == p[gold[n2]]) continue;
    
                    *p[gold[n1]] += *p[gold[n2]];
                    p[gold[n2]] = p[gold[n1]];
                    mx = max(mx, *p[gold[n1]]);
                }
                else if(gold[n1] > -1 && gold[n2] == -1)
                {
                    gold[n2] = gold[n1];
                    (*p[gold[n1]])++;
                    mx = max(mx, *p[gold[n1]]);
                }
                else if(gold[n2] > -1 && gold[n1] == -1)
                {
                    gold[n1] = gold[n2];
                    (*p[gold[n2]])++;
                    mx = max(mx, *p[gold[n1]]);
                }
            }
            printf("%d\n", mx);
        }
    
        return 0;
    }
    

    10년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.