UESTC 1903 铁路

铁路

Time Limit: 1000 ms Memory Limit: 65535 kB 

 

Description

很久很久以前,E国遭遇了一次巨大的冲击。E国的铁路运输网已经完全崩溃。但是伟大的列车托夫出现了,他领导着E国人重新开始修铁路。为了生产资料的运输,我们希望任意的两个城市都能够经由铁路直接或间接连通。


但是E国的城市修建的十分奇异,以至于每个城市至多只能和其它城市中的k座之间直接修建一条铁路。现在,E国有n个城市,那么最多能在E国建设多少条铁路?这里,认为在两个城市间直接铺设多条铁路是不合法的。如果无论怎么修建都不能连通所有城市,则输出0。

Input

输入包含多组测试数据。第一行是一个整数T (T <= 1000),表示测试组数。随后有T行,每行有两个整数n, k(1<=n<=10000, 0<=k<=10000)分别表示,E国城市的数目和每个城市最多能直接相连的城市个数。

Output

对于每组输入数据,输出包含所求数目的一行。

Sample Input

2
5 3
5 0

Sample Output

7
0

解题思路:
把城市数目n当做为点数,n*k为总点数,则每条铁路消耗两个点数;
总共可以建n*k/2条铁路;
不过,当k大于n-1时达到最大值max=n*(n-1)/2;
然后,再处理下特殊情况就OK了!


#include"stdio.h"       
#include"string.h"         
#include"stdlib.h"      
int main()         
{         
    int n,k,T;         
    scanf("%d",&T);         
    while(T--)         
    {       
        int cnt;
        scanf("%d%d",&n,&k);    
        if(k==0||n==1)       //此种情况无法修建铁路
            cnt=0;  
        else if(k==1)    
        {    
            if(n==2)            //恰好一条铁路
                cnt=1;     
            else                    //城市数目大于2无法联通所有城市
                cnt=0;   
        }    
        else    
        {    
            if(k>=n-1)              //城市间铁路数目已经饱和
                cnt=n*(n-1)/2;             
            else    
          	 cnt=k*n/2;  //注意奇偶性,n/2*k会wrong answer!                   
        }   
  	printf("%d\n",cnt);     
    }         
    return 0;         
} 
 
互联网络程序设计是指在互联网上进行程序开发和设计的过程。UESTC则是我国的一所著名高校——电子科技大学。 互联网络程序设计 uestc包含了两个主要的方面:互联网络和程序设计。互联网络是指将多个计算机网络通过通信链路互相连接起来,实现信息共享和资源共享的网络系统。程序设计是指根据需求和目标,通过编写代码和设计算法,实现计算机程序的过程。 互联网络程序设计 uestc的学习内容主要包括以下几个方面: 1. 网络知识:学习互联网络的基本概念、原理和协议,如TCP/IP协议、HTTP协议等。掌握网络编程的基本技术,能够编写网络应用程序。 2. 数据通信:学习数据通信的基本原理和技术,包括数据传输的方式、数据压缩和加密等。了解网络安全和数据保护的基本知识。 3. 程序设计:学习编程语言和开发工具,如Java、C++和Python等。掌握常用的编程技巧和方法,能够设计和实现复杂的网络应用程序。 4. Web开发:学习Web开发的基本知识和技术,包括HTML、CSS、JavaScript等。能够设计和实现交互式的Web应用程序。 5. 数据库技术:学习数据库的基本原理和技术,如SQL语言和数据库管理系统。能够设计和管理数据库,实现数据的存储和检索。 通过学习互联网络程序设计 uestc,可以掌握互联网应用开发的基本技能,具备设计和实现网络应用程序的能力。这对于目前互联网行业的人才需求来说是非常重要的,也为学生提供了广阔的就业和创业机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值