B4016 树的直径

#include<bits/stdc++.h>
using namespace std;
const int N = 1000000;
vector<pair<int, int>> vec[N];
vector<int> ans[N];
bool hasp[10*N];
int main() {
	int n;
	cin >> n;
	for(int i = 1; i < n; i++) {
		int u, v;
		cin >> u >> v;
		vec[v].push_back(u); // 记录父子关系
		hasp[v] = true;
	}
	long long rt = -1;
	for(int i = 1; i <= n; i++) {
		if(!hasp[i]) {
			rt = i;
			break;
		}
	}
	for(int i = 1; i <= n;i++){
		if(i == rt){
			continue;
		}
		int now = 
		while
	}
}

AtCoder E - Alternating Costs

#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[1000][1000];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t;
	cin >> t;
	while (t--) {
		ll a, b, x, y;
		cin >> a >> b >> x >> y;
		memset(dp, 0, sizeof(dp));
		ll dx = abs(x), dy = abs(y);
		ll ans = 0, k = 0;
		for(int i = 0; i <= dx; i++) {
			for(int j = 0; j <= dy; j++) {
				if(k%2 == 0) {
					dp[i][j] = min(dp[i-1][j]+a, dp[i][j-1]+b);
				} else {
					dp[i][j] = min(dp[i-1][j]+b, dp[i][j-1]+a);
				}
			}
		}
		cout << dp[dx][dy] << '\n';
	}
}