确定比赛名次

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28765    Accepted Submission(s): 11463

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
 
Sample Output
1 2 4 3
 
Author
SmallBeer(CML)
 
Source
 
Recommend
lcy
 
原汁原味的拓扑、、、、
鬼畜的输出、、、、
#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N  10000
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int n,m,x,y,s,tot,in[N],head[N],ans[N];
int read()
{
    ,f=; char ch=getchar();
    ; ch=getchar();}
    +ch-'; ch=getchar();}
    return x*f;
}
struct Edge
{
    int from,to,next;
}edge[N];
int add(int x,int y)
{
    tot++;
    edge[tot].to=y;
    edge[tot].next=head[x];
    head[x]=tot;
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        s=,tot=;
        memset(,sizeof(in));
        memset(ans,,sizeof(ans));
        memset(head,,sizeof(head));
        memset(edge,,sizeof(edge));
        ;i<=m;i++)
        {
            x=read(),y=read();
            in[y]++;add(x,y);
        }
        ;i<=n;i++)
         ) q.push(i);
        while(!q.empty())
        {
            x=q.top(),q.pop();
            ans[++s]=x;
            for(int i=head[x];i;i=edge[i].next)
            {
                int t=edge[i].to;
                in[t]--;
                ) q.push(t);
            }
        }
        ;i<s;i++)
         printf("%d ",ans[i]);
        printf("%d\n",ans[s]);
    }
    ;
}

最新文章

  1. npapi插件开发流程与实例
  2. 提取KIndle中每本书的笔记并单独保存
  3. SilverLight 条码 扫描枪 MVVM(转载)
  4. 链接库lib和dl的概念,加载方式的区别
  5. 【转】SQL Server T-SQL写文本文件
  6. Creating Help Pages for ASP.NET Web API -摘自网络
  7. wdlinux mysql innodb的安装
  8. android strings.xml转义字符, 注意细节解决(转)
  9. Android 混淆文件project.properties和proguard-project.txt
  10. Ubuntu基本设置
  11. Linux下使用cat制作“内涵图”
  12. 正则表达式regex(golang版)
  13. 自定义控件之SegmentControlView
  14. eclipse的常用设置(空间新建后需要的配置)
  15. javascript 转换大小写字母
  16. Angular 定时器$timeout和$interval,延时调用
  17. NodeList类型
  18. 详细解读Volley(三)—— ImageLoader &amp; NetworkImageView
  19. MSSqlServer 数据库降级及数据转移
  20. 算法(3)Rotate Array

热门文章

  1. 第一次阅读作业 xinzcover
  2. github——团队合作
  3. 迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕
  4. 【分享】4412开发板POP烧写ubuntu出错,如何挂载emmc分区解决方法
  5. zend studio汉化离线语言包安装方法
  6. CAD交互绘制矩形框(com接口)
  7. Java基础(十四)--装箱、拆箱详解
  8. caffe数据读取
  9. 08C#事件
  10. 10CSS高级滤镜