先上题目:

4110: PE class

Submit your solution     Discuss this problem     Best solutions
 

Description

The dwarven kingdom and the giant countries classmates have PE class together.
The students' height from 1 cm to N cm,everyone's height is different from other's.
There are N students in total, and there are M pairs of relationship, such as (i, j)
said the student's height stand at position i is less than the one stand at position j.
Can you find each position of the height of students?

Input

The first line of input is the number of test case.
The first line of each test case contains two integers, N (1 ≤ N ≤ 200) and M (0 ≤ M ≤ 40,000).
The next M line each contain two integers a and b, indicating the student's height stand at
position a must be less than the one stand at position b. (1 ≤ a, b ≤ N)
There is a blank line before each test case.

Output

For each test case output one line the students' heights from position 1 to position N.
If there are several solutions exist, you should output the one with the smallest height for label 1,
then with the smallest height for label 2, then with the smallest height for label 3 and so on...
If no solution exists, output one line,just a number -1.output a blank line after each test case

Sample Input

44 2
1 2
2 14 1
2 14 1
3 23 1
1 1

Sample Output

-12 1 3 41 3 2 4-1

Source

ycg663@scuacm
Sichuan University Programming Contest 2012 Preliminary

  题意:有身高为1~n的n个人,每个人的身高都不一样,现在要这些人站成一列,给出一系列的关系(i,j)代表i位置的人要比j位置的人矮。现输出字典序最小的拓扑排序结果。

  这一题需要注意的地方是字典序最小,需要逆向构图(有(i,j)的关系,就要构造一条(j,i)的边)。

  为什么需要逆向构图?

  我的理解:字典序最小的逆否命题是除了遵守边的要求以外,还需要注意排在后面的数需要尽量大,所以我们可以在拓扑排序的时候每一次出来一个位置,就给它赋一个还没有用的最大值。

  为什么正向构图就不可以呢?

  先看一组数据

  4 2

  2 3

4 1

  如果按照正向构图,结果:4 1 2 3

  如果按照逆向构图,结果:1 3 2 4

  我的理解:并不一定所有的点都会被边连在一起,如果点被分成了几组的话,那么这几组的先后顺序就需要考虑了。就像上面的例子一组是2->3,另一组是4->1存在一组里面大位置在小位置前面,同时这个大位置比其他组的开头元素都要大,那就会得出错误的答案了(感觉这里说的还是不是很清楚)。

  感觉这就像需要贪心一样。但是这里在编号的时候因为它给了你限制条件位置编号大的尽量大(当然,这要先符合拓扑排序的要求),所以就需要逆向构图了。

  这一切的根本还是因为拓扑排序结果不唯一。

上代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <queue>
 5 #define NUM 202
 6 #define MAX 40002
 7 using namespace std;
 8
 9 int n,m;
10
11 int e[NUM][NUM];
12 int tot[NUM];
13 int lo[NUM];
14
15 priority_queue<int,vector<int>,less<int> > p;
16 bool tp(){
17     int c=n;
18     int r=0;
19     while(!p.empty()) p.pop();
20     for(int i=1;i<=n;i++) if(tot[i]==0) p.push(i);
21     while(!p.empty()){
22         int v=p.top();
23         lo[v]=c; c--;
24         r++;
25         p.pop();
26         for(int i=1;i<=n;i++){
27             if(e[v][i]==1){
28                 tot[i]--;
29                 if(tot[i]==0){
30                     p.push(i);
31                 }
32             }
33         }
34     }
35     if(r<n) return 0;
36     return 1;
37 }
38
39 int main()
40 {
41     int t,u,v;
42     bool f;
43     //freopen("data.txt","r",stdin);
44     scanf("%d",&t);
45     for(int z=0;z<t;z++){
46         scanf("%d %d",&n,&m);
47         memset(e,0,sizeof(e));
48         memset(tot,0,sizeof(tot));
49         memset(lo,0,sizeof(lo));
50         f=0;
51         while(m--){
52             scanf("%d %d",&u,&v);
53             if(e[v][u]==0){
54                 if(u==v) f=1;
55                 e[v][u]=1;
56                 tot[u]++;
57             }
58         }
59         if(f || !tp()) printf("-1");
60         else{
61             for(int i=1;i<=n;i++){
62                 if(i!=1) printf(" ");
63                 printf("%d",lo[i]);
64             }
65         }
66         printf("\n\n");
67     }
68     return 0;
69 }

4110

转载于:https://www.cnblogs.com/sineatos/p/3633090.html

SCU - 4110 - PE class相关推荐

  1. 2022-2028年中国PE自粘性保护膜行业市场调查研究及发展前景展望报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了PE自粘性保护膜行业相关概述.中国PE自粘性保护膜行业运行环境.分析 ...

  2. 2022-2028年中国PE膜产业竞争现状及发展前景分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了PE膜行业相关概述.中国PE膜行业运行环境.分析了中国PE膜行业的现 ...

  3. PE文件结构详解(三)

    0x01 前言 上一篇讲到了数据目录表的结构和怎找到到数据目录表(DataDirectory[16]),这篇我们我来讲讲数据目录表后面的另一个结构--区块表. 0x01 区块 区块就是PE载入器将PE ...

  4. 戴尔服务器重装系统优盘启动不了怎么办,U盘重装系统,开机按F12选择USB启动项无法进入PE系统怎么办?...

    U盘重装系统,开机按F12选择USB启动项无法进入PE系统怎么办?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! U盘重 ...

  5. PE文件和COFF文件格式分析——导出表的应用——一种摘掉Inline钩子(Unhook)的方法

    在日常应用中,某些程序往往会被第三方程序下钩子(hook).如果被下钩子的进程是我们的进程,并且第三方钩子严重影响了我们的逻辑和流程,我们就需要把这些钩子摘掉(Unhook).本件讲述一种在32位系统 ...

  6. PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL

    通过导出表隐性加载DLL?导出表?加载DLL?还隐性?是的.如果觉得不可思议,可以先看<PE文件和COFF文件格式分析--导出表>中关于"导出地址表"的详细介绍.(转载 ...

  7. PE文件和COFF文件格式分析——导出表的应用——一种插件模型

    可能在很多人想想中,只有DLL才有导出表,而Exe不应该有导出表.而在<PE文件和COFF文件格式分析--导出表>中,我却避开了这个话题.我就是想在本文中讨论下载Exe中存在导出表的场景. ...

  8. PE文件和COFF文件格式分析——导出表

    在之前的<PE可选文件头>相关博文中我们介绍了可选文件头中很多重要的属性,而其中一个非常重要的属性是(转载请指明来源于breaksoftware的CSDN博客) IMAGE_DATA_DI ...

  9. PE文件和COFF文件格式分析——RVA和RA相互计算

    之前几节一直是理论性质的东西非常多.本文将会讲到利用之前的知识得出一个一个非常有用的一个应用.(转载请指明来源于breaksoftware的csdn博客) 首先我们说下磁盘上A.exe文件和正在内存中 ...

最新文章

  1. android 异常打印
  2. Nacos系列:基于Nacos的注册中心
  3. 微服务开发框架 SpringCloud
  4. PHP+Mysql高仿百度知道签到源码演示与下载
  5. python 内存释放gc_如何释放内存的python删除对象?
  6. 詹皇比肩乔丹!如何防住他?这是AI给出的回答
  7. 小程序Android端movable-view拖拽卡顿掉帧的优化
  8. 1016. 部分A+B (15)-PAT乙级真题
  9. 新手入门C语言易错点
  10. 在 VM的CentOS 中 安装 sspanel 宝塔面板 总结
  11. 2021-11-17每日刷题打卡
  12. echarts水球图-动态波纹百分比数据显示
  13. 微信小程序下载二进制流图片并转base64位图为png格式
  14. uni-app知识点整理
  15. excel2016中绘制多条折线的散点图
  16. 这19款最好用的免费安全工具,使用不当或许面临牢狱之灾。
  17. 传阿里巴巴集团推迟上市至2015年底
  18. 《高效的秘密》第一章,第二章读后感
  19. Leetcode-Longest Turbulent Subarray
  20. OpenCV笔记—进阶篇(图像效果处理)

热门文章

  1. JavaScript中的arguments,callee,caller,call,appy
  2. 【有利可图网】PS教程:用PS合成立体特效的穿插照片效果
  3. 计算机夏令营英语怎么说,夏令营用英语怎么说?
  4. 前端开发规范(二)——CSS 命名规范
  5. 简历上的哪些内容才是 HR 眼中的干货?
  6. Longest Substring with Same Letters after Replacement (hard)
  7. MT9V034摄像头学习笔记(二)
  8. kvm虚拟机静态和动态迁移
  9. 计算机的声音怎么设置在哪设置方法,Win7电脑声音设置的方法
  10. 微信PC版史诗级更新,终于摆脱手机了!