请求加强数据
查看原帖
请求加强数据
928568
zhouzihan20110620楼主2024/11/9 15:27
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int n, c[100005], u, v, ans;
vector <int> g[100005];
void dfs(int nowi, int lsti, int nans)
{
	ans = max(ans, nans);
	for (int i = 0;i < g[nowi].size();i++)
	{
		if (g[nowi][i] == lsti)
		{
			continue;
		}
		if (c[g[nowi][i]] ^ c[nowi])
		{
			dfs(g[nowi][i], nowi, nans + 1);
		}
	}
}
int main()
{
//	freopen("hack.in", "r", stdin);
	cin >> n;
	for (int i = 1;i <= n;i++)
	{
		cin >> c[i];
	}
	for (int i = 1;i < n;i++)
	{
		cin >> u >> v;
		g[u].emplace_back(v);
		g[v].emplace_back(u);
	}
	for (int i = 1;i <= n;i++)
	{
		dfs(i, 0, 1);
	}
	cout << ans;
	return 0;
}

rt,如上 O(n2)O(n^2) 代码可AC

2024/11/9 15:27
加载中...