hdu 1285 确定比赛名次(很典型的拓扑排序)

简介:

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

拓扑排序,很明显的一道拓扑排序的问题,用一个二维数组存储两个数字之间的关系,如果某个数大于另一个数,那么它们之间的关系为1,否则为0.

如果存在关系为1的两个数据,那么行表示比列大。列的下标入度自增1.然后使用拓扑排序思想依次取出每个节点。

此题可参考类似题目 http://www.cnblogs.com/newpanderking/archive/2012/10/16/2726757.html 这也是一道经典的拓扑排序

复制代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 510
using namespace std;
/*
拓扑排序解法
*/

int rela[maxn][maxn];
int in_degree[maxn],ans[maxn];
int n,m,x,y;

void top_order()
{
    //预处理
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    if(rela[i][j])in_degree[j]++;

    for(int i=1;i<=n;i++)
    {
        int k=1;
        while(in_degree[k]!=0)k++;
        ans[i]=k;
        in_degree[k]--;//更新为-1,后边检测时不受影响
        for(int j=1;j<=n;j++)
        if(rela[k][j])
        in_degree[j]--;//相关联的入度减1

    }

}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(in_degree,0,sizeof(in_degree));
        memset(ans,0,sizeof(ans));
        memset(rela,0,sizeof(rela));
        for(int i=0;i<m;i++)
        {
            scanf("%d%d",&x,&y);
            rela[x][y]=1;
        }
        top_order();
        for(int i=1;i<n;i++)
        printf("%d ",ans[i]);
        printf("%d\n",ans[n]);
    }
    return 0;
}
复制代码
'
本文转自NewPanderKing51CTO博客,原文链接: http://www.cnblogs.com/newpanderking/archive/2012/11/08/2759608.html  ,如需转载请自行联系原作者
相关文章
|
6月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
[算法刷题题解笔记] 洛谷 P1011 [NOIP1998 提高组] 车站 [数学|斐波那契|推导]
[算法刷题题解笔记] 洛谷 P1011 [NOIP1998 提高组] 车站 [数学|斐波那契|推导]
|
6月前
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
42 0
|
6月前
蓝桥备战--纪念品分组OJ532,贪心证明
蓝桥备战--纪念品分组OJ532,贪心证明
29 0
|
6月前
蓝桥备战--分糖果OJ2928 贪心 分类讨论
蓝桥备战--分糖果OJ2928 贪心 分类讨论
67 0
|
算法 Java
代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球
代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球
67 0
|
Java C语言 C++
【蓝桥杯基础题】2020年省赛填空题—既约分数
【蓝桥杯基础题】2020年省赛填空题—既约分数
【蓝桥杯基础题】2020年省赛填空题—既约分数
|
存储
【每日一题Day95】LC1815得到新鲜甜甜圈的最多组数 | 状态压缩dp 记忆化搜索
子问题、哪些操作会影响数据:余下的甜甜圈数量left,以及剩余可以选的元素个数 cnt[x]【dfs函数的两个参数->使用状态压缩至一个int类型变量中】
114 0
【每日一题Day95】LC1815得到新鲜甜甜圈的最多组数 | 状态压缩dp 记忆化搜索
|
机器学习/深度学习 算法 Java
ACM 选手图解 LeetCode 模拟法解决螺旋矩阵Ⅱ
给定正整数 n,生成一个包含 1 ~ n² 所有元素,且元素按顺时针螺旋排列的 n * n 正方形矩阵 matrix。
ACM 选手图解 LeetCode 模拟法解决螺旋矩阵Ⅱ