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

拓扑序就是求一个序列 数 a 出现在数 b 前面,最终输出满足条件的序列即可;

过程就是每次选取入度为0的数每次把它计入拓扑序列,并把与该点相连的所有边删除即可;

由于拓扑序不是唯一的本题要求序号小的放前面,所以可以用优先队列;

#include <math.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <queue>
#define met(a, b) memset(a, b, sizeof(a))
using namespace std;
#define N 510 struct node
{
int x;
bool friend operator < (node a, node b)
{
return a.x > b.x;///小的先出来;
}
}; int G[N][N], du[N], n, m, u, v, ans[N]; void topo()
{
priority_queue<node>Q;
node p, q;
for(int i=; i<=n; i++)
{
if(du[i]==)
p.x=i,
Q.push(p);
}
int k=;
while(Q.size())
{
p=Q.top();Q.pop();
ans[k++] = p.x; for(int i=; i<=n; i++)
{
if(G[p.x][i])
{
du[i]--;
if(du[i]==)
q.x=i,Q.push(q);
}
}
}
} int main()
{
while(scanf("%d %d", &n, &m)!=EOF)
{
met(G,);met(ans, );
for(int i=; i<=m; i++)
{
scanf("%d %d", &u, &v);
if(G[u][v]==)
{
G[u][v] = ;
du[v]++;
}
}
topo(); for(int i=; i<=n; i++)
printf("%d%c", ans[i], i==n?'\n':' ');
}
return ;
}

确定比赛名次---hdu1285(拓扑排序)的更多相关文章

  1. 确定比赛名次---HDU1285(拓扑排序)

    http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意: 给你每场比赛的成绩,让你根据成绩把排名弄出来 分析: 本来我是用普通方法写的,然后就一直wa, ...

  2. hdu1285 确定比赛名次(拓扑排序)

    确定比赛名次 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  3. hdu1285 确定比赛名次【拓扑排序】

    题目链接 确定比赛名次                                         Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. hdu 确定比赛名次(拓扑排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    ...

  5. HDU 1285:确定比赛名次(拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. hdoj-1285-确定比赛名次(拓扑排序)

    题目链接 /* Name:hdoj-1285-确定比赛名次 Copyright: Author: Date: 2018/4/11 15:59:18 Description: 标准的拓扑排序模板题,注意 ...

  7. [ACM] hdu 1285 确定比赛名次 (拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. hdoj 1285 确定比赛名次【拓扑排序】

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. HDU 1285 确定比赛名次(拓扑排序)题解

    Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...

  10. HDU 1285 确定比赛名次(拓扑排序模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意:有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行 ...

随机推荐

  1. js 内置对象常用方法

    1 内容概述 js包含一些内置对象,如Array,Function,String等,这些是基本的,常用的js类,所以了解它们十分重要:把他们的方法,用例子和文字简要的记录下来,方便今后参看. 2 Ar ...

  2. 【转载】PHP 常用的header头部定义汇总

    header() 函数向客户端发送原始的 HTTP 报头. 认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此 ...

  3. ExecuteNonQuery和ExecuteScalar的区别

    ExecuteNonQuery   针对 Connection 执行 SQL 语句并返回受影响的行数. 返回值 受影响的行数. 备注 您可以使用 ExecuteNonQuery 来执行目录操作(例如查 ...

  4. 网卡优化RPS/RFS

    网卡优化 RSS receive side scaling,网卡多队列,需要硬件支持.网卡接收到网络数据包后,要发送一个硬件中断,通知CPU取数据包.默认配置,都是由CPU0去做. RPS recei ...

  5. sed 指定行之间的内容替换

    [root@Cobbler logs]# cat aa.txt qqq123ppp123====123[root@Cobbler logs]# sed -i '2,5s#123#456#' aa.tx ...

  6. KMP算法完整教程 (下)

    下面我们用数学归纳法来解决这个填值的问题. 这里我们借鉴数学归纳法的三个步骤(或者说是动态规划?): 1.初始状态 2.假设第j位以及第j位之前的我们都填完了 3.推论第j+1位该怎么填 初始状态我们 ...

  7. c配置库ccl使用小结

    配置文件为key=value键值对形式 下载与安装 库文件下载:ccl-0.1.1.tar.gz 安装:  tar -zxvf ccl-0.1.1.tar.gz  cd ccl-0.1.1 ./con ...

  8. yum 安装 influxdb/telegraf

    环境:centos 7 参考官网教程:http://docs.influxdata.com/telegraf/v1.9/introduction/installation/ 添加 yum 源: vim ...

  9. php 转码

    //$names = iconv("UTF-8", "gb2312", $name); //等同于javascript encodeURI("电影&q ...

  10. Update 语句用于修改表中的数据。

    语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值