确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2632 Accepted Submission(s): 924
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
4 3 1 2 2 3 4 3
1 2 4 3
#include<iostream>
#include<cstring>//典型的拓扑排序
using namespace std;
int map[505][505];
int indegree[505];
int main()
{
int n,m;
while(cin>>n>>m)
{
memset(map,0,sizeof(map));
memset(indegree,0,sizeof(indegree));
int p1,p2;
for(int i=0;i<m;i++)
{
cin>>p1>>p2;
while(!map[p1-1][p2-1])
{
map[p1-1][p2-1]=1;
indegree[p2-1]++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(indegree[j]==0)
{
indegree[j]--;
if(i!=n-1)
cout<<j+1<<" ";
else
cout<<j+1<<endl;
for(int k=0;k<n;k++)
{
if(map[j][k]==1)
indegree[k]--;
}
break;
}
}
}
}
return 0;
}
本文介绍了一种用于确定多个参赛队伍排名的算法实现。该算法通过处理比赛结果数据来确定最终的队伍排名顺序,采用拓扑排序的方法确保排名的准确性。

被折叠的 条评论
为什么被折叠?



