HDU1285 确定比赛名次

HDU1285 确定比赛名次

Problem Description
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比 赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用 P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
Input
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
Output
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。

其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
Sample Input
4 3 1 2 2 3 4 3
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
const int N=505;
int degree[N],res[N];
bool map[N][N];
int n,m;
void Topo()
{
    int i,j,p;
    for(i=1;i<=n;i++)
    {
        p=-1;
        for(j=1;j<=n;j++)
        {
            if(degree[j]==0)
            {
                degree[j]--;
                res[i]=p=j;
                break;
            }
        }
        for(j=1;j<=n;j++)
        {
            if(map[p][j]==true)
            {
                map[p][j]=false;
                degree[j]--;
            }
        }
    }
}
void output()
{
    int i;
    printf("%d",res[1]);
    for(i=2;i<=n;i++)
    {
        printf(" %d",res[i]);
    }
    printf("\n");
}
int main()
{
    freopen("in.txt","r",stdin);
    int i,x,y;
    while(~scanf("%d%d",&n,&m))
    {
        memset(map,false,sizeof(map));
        memset(degree,0,sizeof(degree));
        memset(res,0,sizeof(res));
        for(i=1;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            if(map[x][y]==false)
            {
                map[x][y]=true;
                degree[y]++;
            }
        }
        Topo();
        output();
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/d-e-v-i-l/p/4782968.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109346.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java打印数组_Java中打印数组内容的方式有哪些?

    java打印数组_Java中打印数组内容的方式有哪些?下面是几种常见的打印方式。方法一:使用循环打印。publicclassDemo{publicstaticvoidmain(String[]args){String[]infos=newString[]{“Java”,”Android”,”C/C++”,”Kotlin”};StringBufferstrBuffer=newStringBuffer();for(…

    2022年5月2日
    44
  • 产品经理必会知识:万字长文 | 史上最全的付费会员体系分析

    产品经理必会知识:万字长文 | 史上最全的付费会员体系分析1如何理解付费会员体系?老生常谈的AARRR模型中,会员体系在活跃、留存、收入端是最常见的运营手段,它有两种类型: 付费会员体系:通过付费,购买高价值、差异化的权益。 例:88VIP、京东PLUS、腾讯视频VIP、知乎盐选会员。 成长会员体系:通过特定用户行为带来的积累,获得等级成长及差异化权益(一般为低价值)。 例:大众点评会员、滴滴橙长会员、支付宝会员。 会员体系的核心目标,是拉升「付费用户比例」、「用户生命周期」、「ARPU」;在用户价值层面体现为…

    2022年6月16日
    47
  • Java取绝对值(绝对值函数的使用方法)

    在Java中可以使用Math.abs()方法来方便的进行绝对值计算,例如:输入的是正数的时候直接返回即可,当是负数的时候返回它的相反数即可。使用三目运算符可以使用一行代码就能做到intvalue=Math.abs(-90);System.out.println(value);System.out.println(“*********”);inta=-59;System.out.println((a<0)?-a:a);…

    2022年4月17日
    46
  • PLsql注册码一枚

    PLsql注册码一枚plsql7注册码QVJTSV-KNNSSK-G4UUL4-354LGX-FRZ8X3112243.957xs374ca

    2022年7月24日
    6
  • 小米解bl锁跳过168小时_xiaomi redmi 红米秒解BL工具分享支持小米红米机型秒解BL跳过168小时[通俗易懂]

    小米解bl锁跳过168小时_xiaomi redmi 红米秒解BL工具分享支持小米红米机型秒解BL跳过168小时[通俗易懂]目前小米的新机,官方风控都默认绑定7天也就是168小时才能解锁BL,部分账号需要绑定15天才能满足条件,导致很多爱玩机的小伙伴被拒门外。并不是所有人都愿意等待官方解锁时候,而跳过168小时解锁,也成为了很多小伙伴希望的事情。本工具来自ROM乐园技术大神分享,经测试部分版本可秒解BL,无需等待,但并不是百分百才能成功。如果你官方工具解锁失败,不妨试试这个解锁工具,建议更换1个小米账号,再使用此工具解锁BL看看————————————————unlockBootloaderxiaomi…

    2022年6月6日
    215
  • 基于实践的LabVIEW零基础入门视频教程

    原文地址::http://blog.eeecontrol.com/LabVIEW1/《基于实践的LabVIEW零基础入门视频教程》资料不在多,而在于精,资料太多,反而会迷失方向,学习最怕的就是打乱仗,选择对的方向,比努力更重要,这也是本人的亲身经历!《基于实践的LabVIEW零基础入门视频教程》方向明确,适合零基础和初学者,针对性强,本课程将用项目与实践的方法带领大家零

    2022年4月5日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号