题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5813

题意是:有n个点,每个点都能到达num个点,让我们构造任意一个有向图满足条件,即:使得 i 能到达 a[i] 个点;

将顶点按能到达的点数从小到大排序,排好序之后每个点只能往前面的点连边. 所以我们必须要让前面点的个数大于或等于它要连得点的个数;

因而如果存在一个排在第i位的点(前面有i-1个点),i-1>=要求到达的点数(i>要求到达的点数);

按照上述方法构造出图. 复杂度O(N^2).

  1. #include <cstring>
  2. #include <cstdio>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <stack>
  7. #include <vector>
  8. #include <queue>
  9. using namespace std;
  10. #define N 1005
  11. #define met(a, b) memset(a, b, sizeof(a))
  12.  
  13. typedef long long LL;
  14.  
  15. struct node
  16. {
  17. int Id, num;
  18. friend bool operator < (node p, node q)
  19. {
  20. return p.num < q.num;
  21. }
  22. }a[N];
  23.  
  24. int u[N*N], v[N*N];
  25.  
  26. int main()
  27. {
  28. int T, t = , n;
  29. scanf("%d", &T);
  30. while(T--)
  31. {
  32. scanf("%d", &n);
  33.  
  34. for(int i=; i<=n; i++)
  35. {
  36. scanf("%d", &a[i].num);
  37. a[i].Id = i;
  38. }
  39. sort(a+, a+n+);
  40.  
  41. int k = , flag = ;
  42.  
  43. for(int i=n; i>=; i--)
  44. {
  45. if(a[i].num >= i)///前面点的个数必须要大于它要到达的点的个数;
  46. {
  47. flag = ;
  48. break;
  49. }
  50. for(int j=; j<=a[i].num; j++)///由于只需输出一组符合条件的解即可,所以我们可以用a[i].Id连接num条任意的a[j].Id(j < i);
  51. {
  52. u[k] = a[i].Id;
  53. v[k++] = a[j].Id;
  54. }
  55. }
  56. if(flag)
  57. printf("Case #%d: No\n", t++);
  58. else
  59. {
  60. printf("Case #%d: Yes\n", t++);
  61.  
  62. printf("%d\n", k);
  63. for(int i=; i<k; i++)
  64. printf("%d %d\n", u[i], v[i]);
  65. }
  66. }
  67. return ;
  68. }
  69. /*
  70. 3
  71. 3
  72. 2 1 0
  73. 2
  74. 1 1
  75. 4
  76. 3 1 1 0
  77. */

Elegant Construction---hdu5813(构造图)的更多相关文章

  1. HDU5813 Elegant Construction

    Elegant Construction                                                                         Time Li ...

  2. hdu-5813 Elegant Construction(贪心)

    题目链接: Elegant Construction Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 65536/65536 K (J ...

  3. HDU 5813 Elegant Construction(优雅建造)

    HDU 5813 Elegant Construction(优雅建造) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65 ...

  4. HDU 5813 Elegant Construction (贪心)

    Elegant Construction 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...

  5. HDU 5813 Elegant Construction 构造

    Elegant Construction 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...

  6. 2016 多校联赛7 Elegant Construction

    Being an ACMer requires knowledge in many fields, because problems in this contest may use physics, ...

  7. HDU 5813 Elegant Construction

    构造.从a[i]最小的开始放置,例如放置了a[p],那么还未放置的,还需要建边的那个点 需求量-1,然后把边连起来. #pragma comment(linker, "/STACK:1024 ...

  8. HDU 5813 Elegant Construction ——(拓扑排序,构造)

    可以直接见这个博客:http://blog.csdn.net/black_miracle/article/details/52164974. 对其中的几点作一些解释: 1.这个方法我们对队列中取出的元 ...

  9. 2016 Multi-University Training Contest 7

    6/12 2016 Multi-University Training Contest 7 期望 B Balls and Boxes(BH) 题意: n个球放到m个盒子里,xi表示第i个盒子里的球的数 ...

随机推荐

  1. Explaining Delegates in C# - Part 6 (Asynchronous Callback - Way 3)

    By now, I have shown the following usages of delegates... Callback and Multicast delegatesEventsOne ...

  2. proxy chains 试用

    我的机子是通过一台windows机器上的CCProxy代理上网.可是在设置了系统代理以后,发现在终端下若要进行ftp或者ssh等操作,并不能使用代理(但是wget是可以的). 期间试过一些方法,比如在 ...

  3. springboot 集成elasticsearch

    In this article, we will discuss about “How to create a Spring Boot + Spring Data + Elasticsearch Ex ...

  4. 《转载》Eclipse项目上传码云

    本文转载自http://blog.csdn.net/izzyliao/article/details/53074452 把Eclipse项目上传到码云的步骤: 1.登录码云:新建项目 2.输入项目名: ...

  5. print($arr,true)的参数true表示将$arr的值返会,而不是打印

    之前通过error_log()来调试php, 发现收到的json字符前边总是有一个1,一直以为是哪里直接出现了print.print_r.echo.var_dump(), 后来发现原来是某处用了形如e ...

  6. PrintWriter 和 Scanner 类的组合使用

    // 示例程序:将一个Employee记录数组存储成一个文本文件,其中每个记录都保存在单独的一行中, // 而实例的域彼此之间使用分隔符分离开. // 众所周知: // 以二进制格式写出数据,需要使用 ...

  7. 高性能Android应用开发

  8. sencha touch 在线实战培训 第一期 第六节

    2014.1.11晚上8点开的课 本来计划8号晚上开课的,不过那天晚上小区电路出了问题,所以没有讲成.后面两天我又有点其他的事情,所以放到了11号来讲. 本期培训一共八节,前三堂免费,后面的课程需要付 ...

  9. jpa中时间戳格式应该用哪种类型

    遇到个bug,数据库时间存储用了datetime,但是下面的java jpa代码,查询回来,却只有日期. String innerSql = getInnerQuery(departmentId, k ...

  10. cheerio ==> node中的jquery

    三.cheerio ==> node中的jquery  https://www.npmjs.com/package/cheerio $ npm install cheerio -- save 1 ...