代码求优化
  • 板块学术版
  • 楼主yaoqichen
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/25 00:21
  • 上次更新2024/8/25 11:10:03
查看原帖
代码求优化
746282
yaoqichen楼主2024/8/25 00:21
#include<bits/stdc++.h>
using namespace std;
int t;
int n;
struct Tree{
	map<int,int>mp;int cnt;//子树
	int dist;//最前
	int answer;//最后
}a[100005];
void dfs(int x,int deep){
	a[x].dist=deep;
	for(int i=1;i<=a[x].cnt;i++){
		dfs(a[x].mp[i],deep+1);
	}
}
void dfs1(int x,int root){
	a[root].answer-=a[x].cnt;
	for(int i=1;i<=a[x].cnt;i++){
		dfs1(a[x].mp[i],root);
	}
	return;
}
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(int i=1;i<=n;i++){//初始化
			a[i].cnt=0;
		}
		for(int i=1;i<n;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			a[x].mp[++a[x].cnt]=y;
		}
		dfs(1,1);
		for(int i=1;i<=n;i++){
			a[i].answer=n;
			dfs1(i,i);
		}
		for(int i=1;i<=n;i++){
			printf("%d %d\n",a[i].dist,a[i].answer);
		}
	}
	return 0;
}//TLE
2024/8/25 00:21
加载中...