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

确定比赛名次

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. 使用Jenkins和Jmeter搭建性能测试平台

    参考文档:http://blog.csdn.net/liuchunming033/article/details/52186157 jenkins的性能测试结果展现插件:https://wiki.je ...

  2. OpenCV学习(29) 凸包(convexhull)

    在opencv中,通过函数convexHulll能很容易的得到一系列点的凸包,比如由点组成的轮廓,通过convexHull函数,我们就能得到轮廓的凸包.下面的图就是一些点集的凸包. 求凸包的代码如下: ...

  3. eclipse无法解析导入 java.util

    eclipse无法解析导入 java.util是因为jre配置错误. 1.点击需要导入jar的项目,右击项目属性(properties),进入到如下图界面: 2.选择Java Build Path选项 ...

  4. 给开发者准备的 10 款最好的 jQuery 日历插件[转]

    这篇文章介绍的是 10 款最棒而且又很有用的 jQuery 日历插件,允许开发者们把这些漂亮的日历插件结合到自己的网站中.这些日历插件易用性都很强,轻轻松松的就可以把漂亮的日历插件装饰到你的网站了.希 ...

  5. OpenGL使用libPng读取png图片

    #include<stdarg.h> #include<png.h> #include<glut.h> #include<math.h> #includ ...

  6. GO语言基础之struct

    结构struct 1. Go 中的struct与C中的struct非常相似,并且Go没有class 2. 使用 type <Name> struct{} 定义结构,名称遵循可见性规则(即首 ...

  7. Android -- taskAffinity

    每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task.如果一个Activity没有显式的指明该Activity的taskAffinity,那么它的这个属性就等于Ap ...

  8. JSON与XML

    XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词.我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所 ...

  9. [转]VirtualBox 修改UUID实现虚拟硬盘复制

    -------------------------------------------------------------------- 原文:https://www.cnblogs.com/find ...

  10. tcpdump-根据IP查看程序与服务都用了哪些端口

    tcpdump -i em1 -tttt src 116.3.248.157 and port ! 6869 -nn -i 指定端口 -tttt 附带时间戳 -nn 解析域名与端口信息 ####### ...