求助
查看原帖
求助
1055731
iChen楼主2024/7/21 19:21

为什么只AC了两个点!? 求大佬帮助

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
const int N=1e6+1;
int n,cnt,q[N][3];
long long sum;
vector<int>v[N];
inline void dfs(int x,int fa)
{
	cnt++;
	for(int i=0;i<v[x].size();i++)
	{
		int o=v[x][i];
		if(o==fa) continue;
		dfs(o,x);
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		v[a].push_back(b);
		v[b].push_back(a);
		q[i][0]=a;
		q[i][1]=b;
		q[i][2]=c;
	}
	for(int i=1;i<n;i++)
	{
		cnt=0;
		dfs(q[i][0],q[i][1]);
		sum+=abs(n-cnt-cnt)*q[i][2];
	}
	printf("%d",sum);
	return 0;
}
2024/7/21 19:21
加载中...