网站开发岗位实际情况,国际财经新闻,网站流量方案,平台网站建设需求确定比赛名次Problem Description有N个比赛队#xff08;1N500#xff09;#xff0c;编号依次为1#xff0c;2#xff0c;3#xff0c;。。。。#xff0c;N进行比赛#xff0c;比赛结束后#xff0c;裁判委员会要将所有参赛队伍从前往后依次排名#xff0c…确定比赛名次 Problem Description 有N个比赛队1N500编号依次为123。。。。N进行比赛比赛结束后裁判委员会要将所有参赛队伍从前往后依次排名但现在裁判委员会不能直接获得每个队的比赛成绩只知道每场比赛的结果即P1赢P2用P1P2表示排名时P1在P2之前。现在请你编程序确定排名。 Input 输入有若干组每组中的第一行为二个数N1N500M其中N表示队伍的个数M表示接着有M行的输入数据。接下来的M行数据中每行也有两个整数P1P2表示即P1队赢了P2队。 Output 给出一个符合要求的排名。输出时队伍号之间有空格最后一名后面没有空格。 其他说明符合条件的排名可能不是唯一的此时要求输出时编号小的队伍在前输入数据保证是正确的即输入数据确保一定能有一个符合要求. Sample Input 4 3 1 2 2 3 4 3 Sample Output 1 2 4 3 1 #includecstdio2 #includecmath3 #includecstring4 #includeiostream5 #includealgorithm6 using namespace std;7 const int MAXN1000; 8 int b[MAXN][MAXN]; //邻接矩阵 9 int n,m,sum;
10 int topsort()
11 {
12 bool Visit[MAXN];
13 for(int i1;in;i)
14 Visit[i]false; //避免重复访问
15 for(int o1;on;o) //遍历n次
16 {
17 for(int j1;jn;j) //遍历n列
18 {
19 sum0; //入度初始化为零
20 for(int i1;in;i)
21 {
22 sumb[i][j]; //计算节点的入度
23 }
24 if(!Visit[j] sum0) //如果该节点没有访问过且入读为零
25 {
26 printf(%d ,j); //输出节点
27 Visit[j]true; //标记该节点已访问过
28 for(int k1;kn;k)
29 b[j][k]0; //与j节点相邻的所有节点入度清零
30 }
31 }
32 }
33 }
34 int main()
35 {
36 int win,fail;
37 cinnm;
38 memset(b,0,sizeof(b));
39 for(int i1;im;i)
40 {
41 cinwinfail;
42 b[win][fail]1; //放入邻接矩阵
43 }
44 topsort(); //执行拓扑排序
45 return 0;
46 } 转载于:https://www.cnblogs.com/Victor-ZhaoYiWei/p/7137847.html