두 갈래 나무의 층수

1567 단어
제목 설명:
선생님은 마보를 시험해 보고 싶은 문제가 하나 있는데, 마보는 할 줄 몰라서 네가 도와줄 것을 분명히 생각하고 있다.문제는 다음과 같다. 두 갈래 나무에게 이 두 갈래 나무를 층별로 인쇄해 주십시오.같은 레이어인 경우 왼쪽에서 오른쪽으로 인쇄해야 합니다.하나의 노드는 왼쪽 노드를 먼저 추가한 후에 오른쪽 노드를 추가하는 것이다. 즉, 추가 순서는 입력 순서와 일치한다.
형식 입력:
먼저 정수 T를 입력하여 - 총 T그룹 데이터 0을 나타냅니다.
출력 형식:
그룹마다 먼저 "Qi:"한 줄을 출력하면 첫 번째 문제를 표시하고, 그 다음에 각 문제의 두 갈래 트리 각 층의 노드를 출력하고, 같은 층의 노드는 공백으로 나누고, 같은 층의 출력은 한 줄(각 줄의 끝에 공백이 없음), 다른 층의 출력은 동행하지 않습니다(아래의 Sample Ouput 참조)
샘플 입력:
2 

4 5 

2 1 

3 1

4 2

5 4

1 2

2 1

내보내기 예제:
Q1: 

1 

2 3 

4

5

Q2: 

1

2

이 녀석의 사상을 배워서 다음과 같은 코드를 만들었다.
#include
#include
#include
#include

using namespace std;

const int MAXM=101;

int level[MAXM];
vector arr[MAXM];            //arr[ ]=push_back( );

int main(){
    int T;
    while(scanf("%d",&T)!=EOF){
    	int k=0;                     //  
    	while(T--){
    		k++; 
    		int n,m;                 //n    m 
    		scanf("%d%d",&n,&m);
    		memset(level,0,sizeof(level));
    		memset(arr,0,sizeof(arr));
    		level[1]=1;              // 1   1 
    		arr[1].push_back(1);
    		int max_level=1;         //  
			while(n--){
				int a,b;
				scanf("%d%d",&a,&b);
				level[a]=level[b]+1;
				arr[level[a]].push_back(a);
				max_level=max_level>level[a]?max_level:level[a];
			}
			cout<

학습용 링크:
https://blog.csdn.net/chaokudeztt/article/details/104753459

좋은 웹페이지 즐겨찾기