• ACM: HDU 1285 确定比赛名次


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

    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

    /*/
    拓扑排序裸题:
    
    稍微加一个路径保存;
    
    拓扑排序方法如下:
    (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
    (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
    (3)重复上述两步,直到剩余的网中不再存在没有前驱的顶点或者所有的点都排序完毕为止.
    
    AC代码:
    /*/
    #include"algorithm"
    #include"iostream"
    #include"cstring"
    #include"cstdlib"
    #include"string"
    #include"cstdio"
    #include"vector"
    #include"cmath"
    #include"queue"
    using namespace std;
    #define memset(x,y) memset(x,y,sizeof(x))
    #define memcpy(x,y) memcpy(x,y,sizeof(x))
    #define MX 1005
    
    int map[MX][MX];
    int indegree[MX];
    int print[MX];
    
    int main() {
    	int n,m,st,ed,cnt;
    	while(~scanf("%d%d",&n,&m)) {
    		memset(map,0);
    		memset(indegree,0);
    		memset(print,0);
    		for(int i=0; i<m; i++) {
    			scanf("%d%d",&st,&ed);
    			if(!map[st][ed]) {
    				map[st][ed]++;
    				indegree[ed]++;
    			}
    		}
    		for(cnt=1; cnt<=n;) {
    			int i;
    			for(i=1; i<=n; i++) {
    				if(!indegree[i])break;
    			}
    			indegree[i]=-1;
    			print[cnt++]=i;
    			int j;
    			for(j=1; j<=n; ++j) {
    				if(map[i][j]>0) {
    					indegree[j]--;
    					map[i][j]=-1;
    				}
    			}
    		}
    		int first=1;
    		for(int i=1; i<cnt; i++) {
    			if(first)first=0;
    			else printf(" ");
    			printf("%d",print[i]);
    		}
    		puts("");
    	}
    	return 0;
    }
    

      




  • 相关阅读:
    Notes 20180508 : Java基本程序设计结构之关键字与标识符
    Notes 20180507 : Java程序设计之环境搭建与HelloWord
    Notes 20180506 : Java程序设计语言概述
    Knowledge Point 20180506 深究Java的跨平台特性
    Notes 20180505 : 计算机的基础知识
    Notes 20180310 : String第二讲_String的声明与创建
    Notes 20180309 : String第一讲_char的可读序列
    chrome 調試 node 代碼
    mongoose 5.0 链接数据库 代码保存
    koa-compose 类库学习
  • 原文地址:https://www.cnblogs.com/HDMaxfun/p/5741918.html
Copyright © 2020-2023  润新知