• 【BZOJ5060】魔方国 特判


    【BZOJ5060】魔方国

    Description

    小奇和魔法猪打开了战狂的遗迹,穿越到了东元20年。东元元年,战狂率领一千万士兵毁灭了一个又一个文明,并建立起了新文明——昌和帝国,招募了八位伟人:大将军、海军上将、大科学家、大预言家、大工程师、大艺术家、大音乐家、大作家。东元15年,伟大的革命领袖方方方召集仅存的几个文明,组成联盟对抗战狂。方方方设计先后杀死了大作家和大艺术家,并重创了战狂。东元20年,方方方率军进攻大将军,大将军花重金(1600奥术之尘)请来了砰砰博士,炸死了方方方。随后,大将军占领了联盟数座城市并包围了联盟首都。这时,小奇和魔法猪从天而降。它们听说了方方方的英勇事迹,十分感动,决定帮助联盟对抗战狂。在接下来一个月的时间里,小奇和魔法猪夺回了n-1座城市。为了纪念方方方,小奇把联盟改名为魔方国,并打算修建m条道路。一条道路必须要连接两个不同的城市(首都也算城市),两个城市之间可以有多条道路。在修建完道路后,小奇会在一些城市中放置魔法守卫。一个魔法守卫会守护它所在的城市以及与从它所在的城市出发,经过不超过k条边所能到达的城市。在守护所有城市的基础上,小奇会使魔法守卫的数量尽可能少。显然,每一种修建道路的方案都会对应一个最少守卫数。现在,小奇想知道最少守卫数可能是多少

    Input

    输入一行三个数,分别为n,m,k。
    n,m<=100000,k<=100

    Output

    输出两行,第一行一个数表示最少守卫数的数量,第二行从小到大依次输出
    所有可能的最少守卫数。

    Sample Input

    3 2 1

    Sample Output

    2
    1 2

    题解:由于可以连重边,所以。。。傻题。

    特判:n=1且m>0连不了边;k=0;n<=m;m=0。

    #include <cstdio>
    int main()
    {
    	int n,m,k,a,b;
    	scanf("%d%d%d",&n,&m,&k),a=(n<=m)?1:n-m,b=(!m)?n:n-1;
    	if(n==1&&m)	printf("0");
    	else	if(!k)	printf("1
    %d",n);
    	else
    	{
    		printf("%d
    ",b-a+1);
    		while(a<b)	printf("%d ",a++);
    		printf("%d",b);
    	}
    	return 0;
    }
  • 相关阅读:
    项目总结60:Springboot集成swagger2
    ELK学习01:ELK安装
    Java深入学习16:NIO详解2-Selector
    Java深入学习15:NIO详解1-基本概念、Buffer、Channel
    Java深入学习14:Java线程池
    Java深入学习13:synchronized在静态方法和非静态方法下的同步
    Java深入学习12:线程按目标顺序执行以及Lock锁和Condiiton接口
    项目总结59:Redis分布式锁解决电商订单库存并发问题
    Java深入学习11:Lock锁详解
    Java深入学习09:URL类使用和判断图片资源是否有效
  • 原文地址:https://www.cnblogs.com/CQzhangyu/p/7747187.html
Copyright © 2020-2023  润新知