求调
查看原帖
求调
916276
b9113fced86a32cad0d8楼主2024/9/28 22:12
#include<bits/stdc++.h>
using namespace std;

struct node{
	int father;
	int sons[305];
	int point = 0;
};
int n,p;
node tree[305];
int sum[305];
int cnt;
queue<int> people;

void add(int x){
	if(x == 1){
		sum[x]++;
		return;
	}else{
		sum[x]++;
		add(tree[x].father);
	}
}

int main(){
	cin>>n>>p;
	for(int i = 0;i < p;i++){
		int a,b;
		cin>>a>>b;
		tree[b].father = a;
		tree[a].sons[tree[a].point] = b;
		tree[a].point++;
		add(b);
	}
	people.push(1);
	while(!people.empty()){
		int mx = 0;
		int x = people.front();
		for(int i = 0;i < tree[x].point;i++){
			if(tree[x].sons[mx] < tree[x].sons[i]) mx = i;
		}
		tree[tree[x].sons[mx]].father = 0;
		tree[x].sons[mx] = 0;
		for(int i = 0;i < tree[x].point;i++){
			if(tree[x].sons[i] != 0){
				people.push(i);
				cnt++;
			}
		}
		people.pop();
	}
	cout<<cnt + 1;
	return 0;
}

题目样例会输出2

2024/9/28 22:12
加载中...