题目链接:hdu 6090 Rikka with Graph
题意:
给你一个n和m,让你用这m条边将n个点链接起来,使得对于全部的pair<i,j>的最短路之和最小。没有路的值就为n。
题解:
还是和题解说的一样
1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,sizeof(a)) 3 #define F(i,a,b) for(int i=(a);i<=(b);++i) 4 using namespace std; 5 typedef long long ll; 6 7 int t; 8 ll n,m; 9 10 int main(){ 11 scanf("%d",&t); 12 while(t--) 13 { 14 scanf("%lld%lld",&n,&m); 15 if(m>n*(n-1)/2)m=n*(n-1)/2; 16 ll A=2*(n-1)+2*(n-1)*(n-2); 17 if(m>n-1)A=A-2*(m-(n-1)); 18 if(m<n-1) 19 { 20 ll dec=n-1-m; 21 A=dec*n*(n-1)+m*2+m*(m-1)*2+(m+1)*(n-m-1)*n; 22 } 23 printf("%lld ",A); 24 } 25 return 0; 26 }