站外题求助
  • 板块学术版
  • 楼主Chalage_2010
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/5/3 09:45
  • 上次更新2023/10/23 16:49:50
查看原帖
站外题求助
760690
Chalage_2010楼主2023/5/3 09:45

题目描述

时间限制:1s    空间限制:500M
 

题目描述:
读入一棵以 1 为根的树,输出以每个节点为根的子树的大小。

 

输入格式:
第一行一个整数 n 表示节点数。(1≤n≤100000)
之后 n-1 行每行两个整数 x, y,表示一条连接 x 和 y 的边,保证输入的图形成一棵树。

 

输出格式:
n 行,每行 1 个整数,第 i 行为以节点 i 为根的子树的大小。

 

样例输入:
6
2 1
2 3
2 4
2 5
6 5
 

样例输出:
6
5
1
1
2
1

我的代码 可能没用

#include<bits/stdc++.h>
using namespace std;
vector<int> a[100005];
int n,x,y,vis[100005],x1[100005],y2[100005];
int ans[100005];
int dfs(int x,int fa)
{
	vis[x]=fa;
	for(int i=0;i<a[x].size();i++)
	{
		if(a[x][i]!=fa)
		{
			ans[x]+=ans[a[x][i]];
		}
	}
	return ans[x];
}
int main()
{
	cin>>n;
	for(int i=1;i<n;i++)
	{
		scanf("%d%d",&x1[i],&y2[i]);
	}
	for(int i=1;i<n;i++)
	{
		printf("%d \n",dfs(x1[i],y2[i]));
	}
	return 0;
}

求各位大佬看看有什么问题

2023/5/3 09:45
加载中...