zoukankan      html  css  js  c++  java
  • HDU 1285

    确定比赛名次

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


    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
     1 //有环时无法拓扑排序
     2 #include <iostream>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 const int N = 505;
     8 bool map[N][N];
     9 int indegree[N];//存放入度 
    10 
    11 int main()
    12 {
    13      int i,j,k,T;
    14      int m,n;
    15      while(cin>>n>>m)
    16      {
    17           memset(map,0,sizeof(map));
    18           memset(indegree,0,sizeof(indegree));
    19           int from ,to ;
    20           for(i=1;i<=m;i++)
    21           {
    22                cin>>from>>to;
    23                if(map[from][to]==0)//输入重边判断 
    24                {             
    25                     map[from][to] = 1;
    26                     indegree[to]++;
    27                }
    28           }
    29           for(i=1;i<=n;i++)////进行n次遍历,每次找出一个入度为0的节点 
    30                for(j=1;j<=n;j++)//遍历所有节点  
    31                {
    32                     if(indegree[j]==0)  //找出入度为0的节点 
    33                     {
    34                          indegree[j]--; //度数递减,避免下次继续找到 
    35                          if(i!=n)
    36                               cout<<j<<" ";
    37                          else
    38                               cout<<j<<endl;
    39                          for(k=1;k<=n;k++)// 删除与度数为0的节点相关联的边 
    40                          if(map[j][k])
    41                               indegree[k]--;
    42                          break;
    43                     }
    44                }
    45      }
    46      return 0;
    47 }
    48                     
    49                          
    50           
  • 相关阅读:
    node中express的中间件之basicAuth
    python练习1--用户登入
    python基础4--文件操作
    python基础3--字符串
    python基础2--字典
    python基础1--列表
    XP下使用IIS访问asp出现无权查看网页问题的解决办法
    jQueryUI Datepicker的使用
    FileUpload控件使用初步
    HTML中表格元素TABLE,TR,TD及属性的语法
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2684741.html
Copyright © 2011-2022 走看看