牛客练习赛64 B Dis2 树的某个节点的兄弟节点个数

链接:https://ac.nowcoder.com/acm/contest/5633/B
来源:牛客网

题目描述
给出一颗n{n}n个点n−1{n-1}n−1条边的树,点的编号为1,2,…,n−1,n{1,2,…,n-1,n}1,2,…,n−1,n,对于每个点i(1<=i<=n){i(1<=i<=n)}i(1<=i<=n),输出与点i{i}i距离为2{2}2的点的个数。
两个点的距离定义为两个点最短路径上的边的条数。
输入描述:

第一行一个正整数n{n}n。
接下来n−1{n-1}n−1行每行两个正整数ui,vi{u_i,v_i}ui​,vi​表示点ui,vi{u_i,v_i}ui​,vi​之间有一条边。

输出描述:

输入共n{n}n行,第i{i}i行输出一个整数表示与点i{i}i距离为2{2}2的点的个数。

示例1
输入
复制

4
1 2
2 3
3 4

输出
复制

1
1
1
1

说明

点1,3{1,3}1,3的距离为2{2}2,点2,4{2,4}2,4的距离为2{2}2。

备注:

1<=ui,vi<=n<=200000{1<=u_i,v_i<=n<=200000}1<=ui​,vi​<=n<=200000



很明显对于第 i i i个点 V i V_i Vi,他的答案 a n s [ i ] ans[i] ans[i]等于 V i V_i Vi的兄弟节点个数

不要 d f s dfs dfs
不要 d f s dfs dfs
不要 d f s dfs dfs

2 e 5 2e5 2e5的点, d f s dfs dfs爆栈了

#define debug
#ifdef debug
#include <time.h>
#include "/home/majiao/mb.h"
#endif


#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <math.h>

#define MAXN ((int)2e5+7)
#define ll long long int
#define INF (0x7f7f7f7f)
#define fori(lef, rig) for(int i=lef; i<=rig; i++)
#define forj(lef, rig) for(int j=lef; j<=rig; j++)
#define fork(lef, rig) for(int k=lef; k<=rig; k++)
#define QAQ (0)

using namespace std;

#ifdef debug
#define show(x...) \ do { \ cout << "\033[31;1m " << #x << " -> "; \ err(x); \ } while (0)

void err() { cout << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cout << a << ' '; err(x...); }
#endif

#ifndef debug
namespace FIO {
	template <typename T>
	void read(T& x) {
		int f = 1; x = 0;
		char ch = getchar();

		while (ch < '0' || ch > '9') 
			{ if (ch == '-') f = -1; ch = getchar(); }
		while (ch >= '0' && ch <= '9') 
			{ x = x * 10 + ch - '0'; ch = getchar(); }
		x *= f;
	}
};
using namespace FIO;
#endif

int n, m, Q, K;
vector<int> G[MAXN];

//对于点u,兄弟节点个数就是num[i]
//求每一个节点的兄弟节点个数

int main() {
#ifdef debug
	freopen("test", "r", stdin);
	clock_t stime = clock();
#endif
	
	read(n);
	int u, v;
	for(int i=1; i<n; i++) {
		read(u), read(v);
		G[u].push_back(v), G[v].push_back(u);
	}
	for(int i=1; i<=n; i++) {
		int cnt = 0; //统计节点i的兄弟节点个数
		for(int k=0; k<(int)G[i].size(); k++) {
			cnt += G[G[i][k]].size() - 1;
		}
		printf("%d\n", cnt);
	}


#ifdef debug
	clock_t etime = clock();
	printf("rum time: %lf 秒\n",(double) (etime-stime)/CLOCKS_PER_SEC);
#endif 
	return 0;
}




全部评论

相关推荐

码农索隆:小同学,看看我查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 听劝,这个简历怎么改 #
14116次浏览 183人参与
# 面试被问“你的缺点是什么?”怎么答 #
6486次浏览 100人参与
# 水滴春招 #
16656次浏览 370人参与
# 入职第四天,心情怎么样 #
11356次浏览 63人参与
# 租房找室友 #
8060次浏览 53人参与
# 读研or工作,哪个性价比更高? #
26200次浏览 356人参与
# 职场新人生存指南 #
199308次浏览 5519人参与
# 参加完秋招的机械人,还参加春招吗? #
27030次浏览 276人参与
# 文科生还参加今年的春招吗 #
4123次浏览 31人参与
# 简历无回复,你会继续海投还是优化再投? #
48639次浏览 561人参与
# 你见过最离谱的招聘要求是什么? #
144724次浏览 829人参与
# 如果重来一次你还会读研吗 #
155733次浏览 1706人参与
# 机械人选offer,最看重什么? #
69078次浏览 449人参与
# 选择和努力,哪个更重要? #
44330次浏览 494人参与
# 如果再来一次,你还会学硬件吗 #
103653次浏览 1245人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20529次浏览 414人参与
# 招聘要求与实际实习内容不符怎么办 #
46804次浏览 494人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4654次浏览 27人参与
# 你们的毕业论文什么进度了 #
901356次浏览 8961人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81380次浏览 496人参与
# 国企还是互联网,你怎么选? #
109200次浏览 853人参与
牛客网
牛客企业服务