最后一个样例
查看原帖
最后一个样例
791731
wwsummer楼主2024/11/18 22:01

为什么样例最后一个输出658896227

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<map>
#include<cstring>
#include<sstream>
#include<set>
#include<vector>
#include<queue>
#include<bitset>
#include<stack>
#define ll long long
//#include<bits/stdc++.h>
using namespace std;
ll mod=1000000007;
ll n,ans;
struct A{
	ll v,w;
}a[300000]; 
vector<A> v[300000];
ll d[300000];
ll num1=0,num2=0;
void dfs(ll x,ll y){
	for(auto i:v[x]){
		if(i.v!=y){
			d[i.v]=d[x]^i.w;
			dfs(i.v,x);
		}
	}
} 
int main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	std::ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(ll i=1;i<n;i++){
		ll x,y,z;
		cin>>x>>y>>z;
		v[x].push_back(A{y,z});
		v[y].push_back(A{x,z});
	}
	dfs(1,0);
	
	for(ll i=0;i<=61;i++){
		num1=0;
		for(ll j=1;j<=n;j++){
			if(d[j]&(1ll<<i)){
				num1++;
			}
		}
		num2=n-num1;

		ans=(ans%mod+num1%mod*num2%mod*(1ll<<i)%mod)%mod;
		cout<<num1<<endl;
//		cout<<ans<<endl;
	}
	ans%=mod;
	cout<<ans;

	return 0;
}

2024/11/18 22:01
加载中...