拓扑排序结合代码的完整理解

确定比赛名次

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9284    Accepted Submission(s): 3613
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 31 22 34 3
 
Sample Output
1 2 4 3
 
Author
SmallBeer(CML)
赤裸裸的拓扑排序.....
代码:

 
/*@coder Gxjun*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxn 505
bool map[maxn][maxn];
int indegree[maxn],tp[maxn],n,m;
void tuopu_sort()
{
    ,sizeof(tp)); //拓扑排序数组清空
    ,ll;
    ;i<=n;i++)
    {
;j<=n;j++)
        {
         /*每次取出入读位0的数*/
)
            {
                indegree[j]=-1;  //让他等于-1;表示舍弃掉这个数
                tp[k++]=j;  //放到拓扑序列中 
                /*进行一次循环,去掉所有这个数指向的数的一个度*/
;ll<=n;ll++)
                {
                    if(map[j][ll])  //j-->LL 表示成为map[j][ll]
                    {
                        indegree[ll]--;  //减少一个
                    }
                }
                break;  // 终止,然后进行下次的查找
            }
        }
        if(j>n)
        {
            //这表示构成了一个环
            return ;  //之间结束即可,但是在其他的题中,不能这样...
        }
    }
 
}
 
int main()
{
    ,fx,ty;//  fx--->from x to y
    while(scanf("%d%d",&n,&m)!=EOF)
    {
,sizeof(map));  
,sizeof(indegree));
;i<m;i++)
        {
            scanf("%d%d",&fx,&ty);
            if(!map[fx][ty])      //防止数据重复
            {
              map[fx][ty]=true;  
              indegree[ty]++;     //入度加一
            }
        }
        tuopu_sort();
;i<n-1;i++)
        {
            printf("%d ",tp[i]);
        }
        printf("%d\n",tp[i]);
    }
 
    ;
}
 
 可以结合这个ppt,相信自己保证会....
http://wenku.baidu.com/view/35629a8ad0d233d4b14e69fd.html 

hduoj------确定比赛名次的更多相关文章

  1. hduoj 1285 确定比赛名次

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

  2. HDU 1285 确定比赛名次(简单拓扑排序)

    题目链接: 传送门 确定比赛名次 Time Limit: 1000MS     Memory Limit: 65536K Description 有N个比赛队(1 Input 输入有若干组,每组中的第 ...

  3. ACM: HDU 1285 确定比赛名次 - 拓扑排序

     HDU 1285 确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u De ...

  4. HDU 1285 确定比赛名次

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

  5. HDU 1285 拓普排序 基本模板例题 确定比赛名次

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

  6. TOJ3651确定比赛名次

    确定比赛名次   Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte Total Submit: 23          ...

  7. (hdu)1285 确定比赛名次

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

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

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

  9. 确定比赛名次(map+邻接表 邻接表 拓扑结构 队列+邻接表)

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

  10. B - 确定比赛名次

    B - 确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...

随机推荐

  1. PHP命名空间学习笔记

    命名空间的支持版本:PHP 5 > 5.3.0,PHP 7 . 什么是命名空间 从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件 ...

  2. R语言缺点

    R的优点:免费,开源,体积小.缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和1 ...

  3. 观察者模式与Guava EventBus

    观察者模式 结构图 代码实现 public abstract class Subject { private List<Observer> observerList = new Array ...

  4. SpringMVC in IDEA开发实践

    按照上篇装过Tomcat之后. 本机本来装了IDEA和Maven. 参考以下这篇 https://my.oschina.net/gaussik/blog/385697 <使用IntelliJ I ...

  5. [转贴] 数字证书及 CA 的扫盲介绍

    [略有删节] 为了达到普及的效果,俺会尽量用比较浅显,非技术的语言来讲清楚. ★先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿.   ◇普通的介绍信 想必大伙 ...

  6. 关于PHP写的投票网站之刷票终结版

    告诉大家一个坏消息,还是有刷票的行为,有图有真相: 倒数第三项是时间轴,倒数第二项是IP,倒数第一项是邮箱,你们要刷票,拦都拦不住呀呀呀呀呀呀!!!!! 看看这些时间的间隔,看看这些IP的地址,哎,再 ...

  7. 应用程序在状态栏展示时间(C#)

    private DispatcherTimer _timer; private void SetTimeElaspInStatusBar() { try { _timer = new Dispatch ...

  8. (LeetCode 160)Intersection of Two Linked Lists

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  9. Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'

    编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...

  10. MVC模式下值的传递

    公司项目转用MVC开发,故学习总结一下mvc会用到的常用传值方法:       正如大家都熟悉的,MVC路由及运行机制是:       首先,Web 浏览器向服务器发送一条URL 请求,如http:/ ...