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

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

int dfs(int n){
    if(n != gr[n]) gr[n] = dfs(gr[n]);
    return gr[n];
}

int main()
{
    scanf("%d %d", &N, &Q);
    for(int i = 2; i <= N; i++){
        scanf("%d", &pa[i]);
    }
    gr[1] = 1;
    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]] = pa[x[i][1]];
        }
        else if(x[i][0] == 1){
            if(dfs(gr[x[i][1]]) == dfs(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;
}
이 코드가 선생님이 풀이한 코드와 이름만 바뀐 코드입니다.
왜 이 코드가 98점밖에 안 나올까요?

컴스쿨 18-05-07 10:32
 
for(int i = 1; i < N; i++){
        gr[i] = i;
    }

위 부분에서 N이 초기화가 되지 않았습니다.
 
 

Total 584
번호 제   목 글쓴이 날짜 조회
584 2012 중2 전시장 (1) 양진혁 05-21 20
583 입금확인부탁드립니다. (1) 김필애 05-19 23
582 2017년 중등부 2번 (1) 양진혁 05-17 30
581 격자상의 경로 메모리 과다 (2) 양진혁 05-11 43
580 2017전국대회 강좌신청 (1) 김선이 05-10 47
579 중등부 트리 2 (2) 양진혁 05-06 52
578 중등부 트리 (1) 양진혁 05-06 50
577 2017년 KOI 고등부 3,4번 풀이 (1) 윤상현 05-02 68
576 입금 확인 부탁 드립니다. (1) 임원석 04-16 75
575 입금확인 해주세요 (1) 황현희 04-09 77
574 입금했습니다. 수강처리 부탁드립니다. (1) 김문수 04-09 73
573 입금확인 부탁드립니다. (1) 김성규 04-07 83
572 입금확인 부탁드립니다. (1) 이민기 04-06 70
571 입급확인 부탁드립니다. (1) 김필애 04-06 72
570 입금 확인 부탁드립니다. (1) 박준형 04-02 91
569 입금했습니다. (1) 정은주 04-02 84
568 입금확인부탁드립니다 (1) 박시원 03-31 98
567 입금했습니다~강좌 부탁드려요 (1) 서대희 03-29 114
566 입금했어요 (1) 김명민 03-29 114
565 입금했습니다. 강좌 열어주세요! (1) 이청운 03-28 122
 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