求问时间复杂度
  • 板块学术版
  • 楼主I_Love_DS
  • 当前回复18
  • 已保存回复0
  • 发布时间2025/6/13 21:45
  • 上次更新2025/6/14 17:10:15
查看原帖
求问时间复杂度
1118614
I_Love_DS楼主2025/6/13 21:45
#include <bits/stdc++.h>

using namespace std;

const int N = 3e5 + 50;

int n, d[N], c[N];
vector <int> e[N];

int main() {
	scanf("%d", &n);
	for (int i = 1; i < n; i++) {
		int u, v;
		scanf("%d%d", &u, &v);
		d[u]++, d[v]++;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		int id = 0;
		for (auto j : e[i]) 
			c[++id] = d[j] - 1;
		sort(c + 1, c + id + 1);
		for (int j = 1; j <= id; j++) 
			if (c[j]) 
				ans = max(ans, (1 + c[j]) * (id - j + 1) + 1);
	}
	printf("%d\n", n - ans);
	return 0;
}

人机 deepseek 说这份代码时间复杂度是 O(n2logn)O(n^2 \log n)。为什么我觉得是 O(nlogn)O(n \log n)

2025/6/13 21:45
加载中...