hdu 多校联赛 Rikka with Graph

Rikka with Graph

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


Problem Description
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them:

For an undirected graph  G with  n nodes and  m edges, we can define the distance between  (i,j) ( \text{dist}(i,j)) as the length of the shortest path between  i and  j. The length of a path is equal to the number of the edges on it. Specially, if there are no path between  i and  j, we make  \text{dist}(i,j) equal to  n.

Then, we can define the weight of the graph  G ( w_G) as  \sum_{i=1}^n \sum_{j=1}^n \text{dist}(i,j) .

Now, Yuta has  n  nodes, and he wants to choose no more than  m  pairs of nodes  (i,j)(i \neq j)  and then link edges between each pair. In this way, he can get an undirected graph  G  with  n  nodes and no more than  m  edges.

Yuta wants to know the minimal value of  w_G .

It is too difficult for Rikka. Can you help her?  

In the sample, Yuta can choose  (1,2),(1,4),(2,4),(2,3),(3,4) .
 

Input
The first line contains a number  t(1 \leq t \leq 10) , the number of the testcases. 

For each testcase, the first line contains two numbers  n,m(1 \leq n \leq 10^6,1 \leq m \leq 10^{12}) .
 

Output
For each testcase, print a single line with a single number -- the answer.
 

Sample Input
 
   
1 4 5
 

Sample Output
 
   
14
 

这道题做的时候掉到坑里去了 忘了环状和链状的路径都比放射状的长度长 加上后面一个变量没用long long类型 就这么傻傻的错了十几遍 最近智商下降有点严重(┬_┬)、、

ac代码:

#include
using namespace std;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        long long n,m;
        long long ans=0;
        scanf("%lld%lld",&n,&m);
        if(m>=n)
        {
            if(n*(n-1)/2<=m)
                {ans=n*(n-1);
                }
            else if(n*(n-1)/2>m)
                {ans=n*(n-1)+(n*(n-1)/2-m)*2;
                }
        }
        else if(m==n-1)
        {
            ans=(n-2)*(n-1)*2+2*(n-1);
        }
        else if(m


你可能感兴趣的:(ACM,ACM题目解析,杭电多校联赛)