| 959 E
作者:互联网
模拟kruskal的过程。每连接两个连通块时,所需的边权值为其中一个连通块的点的个数。
如图
因此对于n个点,所连接的第(n-1)条边,权值为(n/2),连接了两个点数为(n/2)的连通块。
#include<cstdio> #include<algorithm> using namespace std; long long n; long long ans; long long x = 1; int main() { scanf("%lld",&n); while(n>1) { ans+=x*(n/2); n-=(n/2); x*=2; } printf("%lld",ans); return 0; }View Code
标签:959,连通,ans,long,权值,include,lld 来源: https://www.cnblogs.com/orange-/p/10889034.html