RE求助
查看原帖
RE求助
917025
XYzero楼主2024/7/20 15:24
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5 + 10;
ll n,m,c[N],v[N],mul_c[N],mul_v[N],ans;
vector<int >e[N];
void dfs(int x,int fa){
	mul_c[x] = c[x] % m,mul_v[x] = v[x] % m;
	for(auto to : e[x]){
		if(to == fa)continue;
		dfs(to,x);
		mul_c[x] *= mul_c[to] % m,mul_v[x] *= mul_v[to] % m;
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	
	cin >> n >> m;
	for(int i = 1;i < n;i++){
		int u,v;
		cin >> u >> v;
		e[u].push_back(v);
		e[v].push_back(u);
	}
	for(int i = 1;i <= n;i++)
	    cin >> c[i];
	for(int i = 1;i <= n;i++)
	    cin >> v[i];
	
	dfs(1,0);
	for(int i = 1;i <= n;i++){
		if(i == 1)ans += mul_c[i] % m;
		else{
			ll tmp = mul_v[1] / mul_v[i] % m;
			ans += 1ll * mul_c[i] * tmp % m;
		}
	}
	cout << ans;
	
	
	
	
	return 0;
}

感觉自己做法没错,却莫名奇妙RE了,求大佬指教!

2024/7/20 15:24
加载中...