//并不理解为什么需要反向建图,由大到小倒序确定排名。感觉正向由小到大和反向由大到小应该是一样的。

解:拓排+贪心,反向建边,先找排名靠后的(now,不知道为什么)

 #include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<string> using namespace std; vector <int> G[];
int T,n,m;
int a[],b[];
int d[];
int now; int main(){
scanf("%d",&T);
for (int cas=;cas<T;cas++){
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++){
G[i].clear();
d[i]=;
}
for (int i=;i<m;i++){
int x,y;
scanf("%d%d",&x,&y);
d[x]++;
G[y].push_back(x);
}
now=n;
for (int i=;i<n;i++){
for (int j=n;j>=;j--){
if (d[j]==){
d[j]=-;
a[now--]=j;
int sz=G[j].size();
for (int k=;k<sz;k++){
d[G[j][k]]--;
}
break;
}
}
}
if (now!=){
printf("-1\n");
continue;
}
for (int i=;i<=n;i++){
b[a[i]]=i;
}
for (int i=;i<=n;i++){
printf("%d%c",b[i],i==n?'\n':' ');
}
}
return ;
}
/*
1
6 5
6 1
1 5
4 5
2 4
3 4 5
4 0
4 1
1 1
4 2
1 2
2 1
4 1
2 1
4 1
3 2
*/

cdoj 排名表 拓扑排序 排名输出 贪心的更多相关文章

  1. cdoj 1150 排名表 拓扑排序

    排名表 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1150 Descrip ...

  2. HDU-4857 逃生(反向拓扑排序 + 逆向输出)

    逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  3. hdu 4857 逆向拓扑排序+反向输出

    /*一组测试实例 4 4 2 3 1 2 4 */ #include<stdio.h> #include<string.h> #include<queue> usi ...

  4. Problem 1014 xxx游戏 暴力+拓扑排序

    题目链接: 题目 Problem 1014 xxx游戏 Time Limit: 1000 mSec Memory Limit : 32768 KB 问题描述 小M最近很喜欢玩XXX游戏.这个游戏很简单 ...

  5. PKU 3687 Labeling Balls(拓扑排序)

    题目大意:原题链接 给出N个未编号的质量各不相同的球,以及它们质量轻重的大小关系,给它们从1-N贴标签编号,无重复.问是否存在可行的编号方法,不存在输出-1, 如果存在则输出唯一一种方案,此方案是使得 ...

  6. hdu 3342 Legal or Not(拓扑排序) HDOJ Monthly Contest – 2010.03.06

    一道极其水的拓扑排序……但是我还是要把它发出来,原因很简单,连错12次…… 题意也很裸,前面的废话不用看,直接看输入 输入n, m表示从0到n-1共n个人,有m组关系 截下来m组,每组输入a, b表示 ...

  7. poj 3683(2-sat+拓扑排序)

    Priest John's Busiest Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11127   Accep ...

  8. POJ3687 Labeling Balls(拓扑排序\贪心+Floyd)

    题目是要给n个重量1到n的球编号,有一些约束条件:编号A的球重量要小于编号B的重量,最后就是要输出字典序最小的从1到n各个编号的球的重量. 正向拓扑排序,取最小编号给最小编号是不行的,不举出个例子真的 ...

  9. hdu-5695 Gym Class(贪心+拓扑排序)

    题目链接: Gym Class Time Limit: 6000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. Oracle EBS-SQL (CST-1):检查BOM历史成本查询(Average Cost).sql

    select  msi1.segment1                   父件编码, msi1.description                  父件描述, msi1.primary_u ...

  2. 关于listener

    View.OnKeyListener |_____onKey(View v, int keyCode, KeyEvent event) View.OnTouchListener |_____onTou ...

  3. Android事件侦听器回调方法浅谈

    http://developer.51cto.com/art/201001/180846.htm Android事件侦听器作为视图View类的接口,其中包含有不少回调方法,比如:onClick():o ...

  4. Delphi Windows API判断文件共享锁定状态(OpenFile和CreateFile两种方法)

    一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...

  5. 【LeetCode练习题】Validate Binary Search Tree

    Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...

  6. uitableview 优化

    1. http://www.cocoachina.com/ios/20150602/11968.html 最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITa ...

  7. poj2387-Til the Cows Come Home dijkstra获得水的问题

    Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29539   Accepted ...

  8. 《面试题精选》15.O(logn)求Fibonacci数列

    题目:定义Fibonacci数列例如以下: /    0                      n=0 f(n)=      1                      n=1          ...

  9. ORACLE告警日志

    告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...

  10. 【部分枚举】【3-21个人赛】ProblemH

    Problem H Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...