Luogu1268 树的重量

思路!好题!太神奇了!

推荐这篇

CODE:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int qr(){
	int x=0;
	char ch=getchar();
	for(;!isdigit(ch); ch=getchar());
	for(; isdigit(ch); ch=getchar()) x=(x<<3)+(x<<1)+ch-48;
	return x;
}
int n,a[31][31],ans,tmp;
int main(){
	while(scanf("%d",&n)!=EOF && n){
		for(int i=1; i<=n-1; i++)
			for(int j=i+1; j<=n; j++)
				a[i][j]=a[j][i]=qr();
		ans=a[1][2];
		for(int i=3; i<=n; i++){
			tmp=0x7fffffff;
			for(int j=1; j<=i-1; j++) 
				for(int k=1; k<=j-1; k++)
					tmp=min(tmp,(a[j][i]+a[k][i]-a[j][k])>>1);
			ans+=tmp;
		}
		printf("%d
",ans);
	}
	return 0;
}

原文地址:https://www.cnblogs.com/pushinl/p/9911109.html