当前位置: 首页 > news >正文

HDU 5813 Elegant Construction 构造

Elegant Construction

题目连接:

http://acm.hdu.edu.cn/showproblem.php?pid=5813

Description

Being an ACMer requires knowledge in many fields, because problems in this contest may use physics, biology, and even musicology as background. And now in this problem, you are being a city architect!
A city with N towns (numbered 1 through N) is under construction. You, the architect, are being responsible for designing how these towns are connected by one-way roads. Each road connects two towns, and passengers can travel through in one direction.

For business purpose, the connectivity between towns has some requirements. You are given N non-negative integers a1 .. aN. For 1 <= i <= N, passenger start from town i, should be able to reach exactly ai towns (directly or indirectly, not include i itself). To prevent confusion on the trip, every road should be different, and cycles (one can travel through several roads and back to the starting point) should not exist.

Your task is constructing such a city. Now it's your showtime!

Input

The first line is an integer T (T <= 10), indicating the number of test case. Each test case begins with an integer N (1 <= N <= 1000), indicating the number of towns. Then N numbers in a line, the ith number ai (0 <= ai < N) has been described above.

Output

For each test case, output "Case #X: Y" in a line (without quotes), where X is the case number starting from 1, and Y is "Yes" if you can construct successfully or "No" if it's impossible to reach the requirements.

If Y is "Yes", output an integer M in a line, indicating the number of roads. Then M lines follow, each line contains two integers u and v (1 <= u, v <= N), separated with one single space, indicating a road direct from town u to town v. If there are multiple possible solutions, print any of them.

Sample Input

3
3
2 1 0
2
1 1
4
3 1 1 0

Sample Output

Case #1: Yes
2
1 2
2 3
Case #2: No
Case #3: Yes
4
1 2
1 3
2 4
3 4

Hint

题意

给你n个城市,告诉你第i个城市恰好能够走到a[i]个城市,让你构造一个有向图,使得满足题意,且不存在环。

题解:

直接暴力去建图就好了,n^2扫一遍,然后只扫编号比自己小的,这样就不会存在环了。

代码

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
struct node{
    int a,id;
}p[1005];
bool cmp(node a,node b){
    return a.a<b.a;
}
int cas = 0;
int ansx[maxn*maxn],ansy[maxn*maxn];
void solve(){
    printf("Case #%d: ",++cas);
    int sum = 0;
    int cnt=0;
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&p[i].a),p[i].id=i;
    sort(p+1,p+1+n,cmp);
    for(int i=1;i<=n;i++){
        if(p[i].a>=i){
            printf("No\n");
            return;
        }
        for(int j=1;j<=p[i].a;j++)
            ansx[cnt]=p[i].id,ansy[cnt++]=p[j].id;
    }
    printf("Yes\n");
    printf("%d\n",cnt);
    for(int i=0;i<cnt;i++){
        printf("%d %d\n",ansx[i],ansy[i]);
    }
}
int main(){
    //freopen("1.txt","r",stdin);
    int t;
    scanf("%d",&t);
    while(t--)solve();
}

相关文章:

  • 详解 ML2 Core Plugin(I) - 每天5分钟玩转 OpenStack(71)
  • IOS 压力测试-UI AutoMonkey
  • 将 Measurements 和 Units 应用到物理学
  • LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)
  • 代理设计模式
  • 3.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:...
  • Linux 第九天: (08月11日) 练习和作业
  • 原生js库,持续更新中……
  • MongoDB工具简要说明
  • apk签名
  • Java中创建对象的5种方式
  • OC多态
  • C标准I/O库函数与Unbuffered I/O函数
  • error: insufficient permissions for device: verify udev rules
  • python爬虫中文网页cmd打印出错问题解决
  • 【node学习】协程
  • Angular 响应式表单 基础例子
  • CentOS 7 防火墙操作
  • ES6简单总结(搭配简单的讲解和小案例)
  • FastReport在线报表设计器工作原理
  • Fundebug计费标准解释:事件数是如何定义的?
  • java概述
  • js操作时间(持续更新)
  • MQ框架的比较
  • underscore源码剖析之整体架构
  • 动态魔术使用DBMS_SQL
  • 记录:CentOS7.2配置LNMP环境记录
  • 微信公众号开发小记——5.python微信红包
  • 详解NodeJs流之一
  • 协程
  • 字符串匹配基础上
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 第二十章:异步和文件I/O.(二十三)
  • "无招胜有招"nbsp;史上最全的互…
  • #HarmonyOS:基础语法
  • #传输# #传输数据判断#
  • #微信小程序:微信小程序常见的配置传值
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (day6) 319. 灯泡开关
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)Java算法:二分查找
  • (一一四)第九章编程练习
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)jdk与jre的区别
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net 获取url的方法
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET实现之(自动更新)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [BZOJ3223]文艺平衡树
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh