为什么不CE
  • 板块学术版
  • 楼主pencil
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/10/27 13:17
  • 上次更新2023/11/4 02:09:22
查看原帖
为什么不CE
137723
pencil楼主2021/10/27 13:17
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
const long long N=1000010;long long n;
long long h[N],ne[N],z[N],v[N],idx=0,have[N],sum=0,s[N];
//typedef long long long long;
bool j[N];
void add (long long a,long long b,long long c){
	ne[++idx]=h[a];
	h[a]=idx;
	z[idx]=b;
	v[idx]=c;
	s[idx]=a;
}
long long dfs(long long wz,long long father){
//	if(j[wz]){
//		have[wz]+=have[father];
//		return have[wz];
//	}
if(j[wz])return 0;
	j[wz]=1;
	long long ans=1;
	for(long long i=h[wz];i;i=ne[i]){
		if(z[i]!=father)
//		sum+=abs(n-have[i]*2)*v[i];
		ans+=dfs(z[i],wz);
	}
	have[wz]=ans;
	return ans;
}
//void dfs2(long long wz){
//	long long ans=0;
//	for(long long i=h[wz];i;i=ne[i]){
//		dfs2(z[i]);
//		ans+=abs()
//	}
//}
long long abs(long long a,long long b){
	if(a>b)
	return b;
	else
	return a;
}
int main(){
	
	cin>>n;
	for(long long i=1;i<n;i++){
		long long a,b,c;
		cin>>a>>b>>c;
		add(a,b,c);
		add(b,a,c);
//		r[a]=1;
	}
	memset(have,0,sizeof(have));
	memset(j,0,sizeof(j));
	dfs(1,0);
//	for(long long i=1;i<=n;i++){
//		if(!j[i]&&!r[i]){
//			have[i]=dfs(i,0);
//		}
//	}
	memset(j,0,sizeof(j));
//	for(i=1;i<=n;i++){
//		if(!j[i]){
//			dfs2(i);
//		}
//	}
//	for(i=1;i<=n;i++){
//		
//	}
//for(long long i=1;i<=idx;i++)
//cout<<abs(n-have[z[i]]*2)<<' ';
for(long long i=1;i<=idx;i+=2){
	
	sum+=abs(n-min(have[z[i]],have[s[i]])*2)*v[i]; 
}
	cout<<sum;
	return 0;
} 

RT,我重打了abs(错的),但是没有报错

2021/10/27 13:17
加载中...