작성일 : 18-05-06 23:39
중등부 트리 2
 글쓴이 : 양진혁(yangjh05)
조회 : 223  
#include <stdio.h>

int N, Q;
int x[400001][3];
int pa[200001], gr[200001], ans[200001];

int main()
{
    scanf("%d %d", &N, &Q);
    for(int i = 2; i <= N; i++){
        scanf("%d", &pa[i]);
    }
    pa[1] = 0;
    for(int i = 0; i < N + Q - 1; i++){
        scanf("%d", &x[i][0]);
        if(x[i][0] == 1)
            scanf("%d %d", &x[i][1], &x[i][2]);
        else
            scanf("%d", &x[i][1]);
    }
    for(int i = 1; i < N; i++){
        gr[i] = i;
    }
    int tmp = Q;
    for(int i = N + Q - 2; i >= 0; i--){
        if(x[i][0] == 0){
            gr[x[i][1]] = gr[pa[x[i][1]]];
        }
        else if(x[i][0] == 1){
            if(gr[x[i][1]] == gr[x[i][2]]) ans[tmp] = 1;
            else ans[tmp] = 0;
            tmp--;
        }
    }
    for(tmp = 1; tmp <= Q; tmp++){
        if(ans[tmp]) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}
이 코드는 2점밖에 안 나오더라고요. 예제를 해보니 다 맞고, 선생님이 풀이해주신 것과 비슷하게 짠 것인데, 어디가 틀렸을까요?

양진혁 18-05-06 23:40
 
gr배열의 의미가 선생님과는 살짝 다른 '자신이 속한 트리의 루트'입니다...
컴스쿨 18-05-07 10:31
 
자신이 속한 루트는 지금 당장 결정한 것이 영원히 유지되는 것이 아니라 그 루트가 다시 상위루트와 연결되는 경우 바뀌어야 합니다.
따라서 질의때마다 다시 루트를 확인해주어야 합니다.
 
 

Total 604
번호 제   목 글쓴이 날짜 조회
604 알고리즘 강의 신청할려고 합니다. 이승태 01-15 6
603 입금했어요 (1) 홍혁재 01-13 11
602 수강신청해서 입금을 했는데 강의가 없어요.. 홍혁재 01-12 13
601 입금확인 부탁드립니다. (1) 김진숙 01-08 14
600 자기주도 C언어 프로그래밍 반복제어문2 형성평가 10 (1) 이성우 12-09 52
599 자기주도 c언어 프로그래밍 <입력> 자가진단 8번 질문입니… (1) 진성규 10-18 119
598    자기주도 c언어 프로그래밍 <입력> 자가진단 8번 질문입니… 이재윤 11-04 97
597 자기주도 c언어 프로그래밍 <입력>자가진단5번 잘 모르겠… (1) 진성규 10-18 101
596 입금확인 부탁드려요~~ 장승혁 10-02 76
595 책을 어디서 사놔요? 남지윤 09-01 152
594 15년 초등 4번문제 질문입니다 안성호 08-31 152
593 도와주세요 남지윤 08-20 175
592 맛보기 영상이 재생이 안되요 남지윤 08-18 154
591 문자열2 형성평가5 번 (1) 정주영 07-28 243
590 자기주도 c언어 함수3-4번 문제 (1) 만수 06-19 298
589 입금 확인 부탁드립니다. (1) 이홍국 06-14 221
588 수강연장규정 (1) 허종 06-12 186
587 입금확인 부탁드립니다. (1) 윤일용 06-10 203
586 입금했습니다. (1) 장상우 05-29 179
585 강의 오류 (1) 양진혁 05-27 258
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    

회사소개 | 개인정보처리방침 | 이용약관 | 찾아오시는 길 | 이메일주소 무단수집거부 | 사업자정보확인
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호 한컴에듀케이션(주) TEL : 031-388-8840 FAX : 031-388-0996
대표자 : 김동규 사업자번호 : 130-86-02870 통신판매업신고번호 : 제 2010-경기안양-888호
COPYTIGHT(C) 한컴에듀케이션(주), ALL RIGHT RESERVED.
담은강좌 : 0