博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5813 Elegant Construction 构造
阅读量:5924 次
发布时间:2019-06-19

本文共 2338 字,大约阅读时间需要 7 分钟。

Elegant Construction

题目连接:

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
using namespace std;const int maxn = 1005;struct node{ int a,id;}p[1005];bool cmp(node a,node b){ return a.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

转载地址:http://ogxvx.baihongyu.com/

你可能感兴趣的文章
jvm 参数设置
查看>>
Redis
查看>>
mongodb的NUMA问题
查看>>
华为手机备忘录资料备份
查看>>
UITableView一些易混属性和方法
查看>>
ORACLE 商友ERP
查看>>
windows平台搭建企业wiki-confluence
查看>>
lvs fullnat部署手册(二)keepalived配置篇
查看>>
JavaScript 图片自适应 和 get参数提取
查看>>
解决使用Jackson的@JsonFormat注解出现时间错误情况
查看>>
查看/修改Linux时区和时间
查看>>
canvas-1描线&矩形
查看>>
探寻安全管理平台(SOC)项目的关键成功因素(续二)
查看>>
关于Java中的被动引用
查看>>
每天一个linux命令(4):mkdir命令
查看>>
mysql中的截图字符串函数
查看>>
关于请求a标签跳转显示ID问题解决
查看>>
SCCM2012系列之四,SCCM2012部署前的SQL Server准备
查看>>
自定义自增序列
查看>>
Git 分支管理策略
查看>>