社区讨论

暴力写为什么出错

P4551最长异或路径参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m21n5uak
此快照首次捕获于
2024/10/09 17:02
去年
此快照最后确认于
2025/11/04 17:34
4 个月前
查看原帖
CPP
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

namespace awa {
	const int N = 114514;
	vector<pll>g[N];
	ll n, d[N];
	ll ans = 0;
	void init() {
		scanf("%lld", &n);
		for (int i = 1; i < n; i++) {
			int u, v, w;
			scanf("%d%d%d", &u, &v, &w);
			g[u].push_back({v, w});
		}
	}

	void dfs(int x) {
		for (unsigned int i = 0; i < g[x].size(); i++) {
			int v = g[x][i].first, w = g[x][i].second;
			d[v] = d[x] ^ w;
			ans = max(d[v], ans);
			dfs(v);
		}
	}
	
	void solve() {
		for (int i = 1; i <= n; i++) {
			memset(d, 0, sizeof d);
			dfs(i);
		}
		cout << ans;
	}
}

int main() {
	awa::init();
	awa::solve();
	return 0;
}
想法每个点是dfs全部走一遍,寻找最大值但是只过部分,这是为什么。

回复

2 条回复,欢迎继续交流。

正在加载回复...