HDU ACM 1285 确定比赛名次

来源:互联网 发布:期货交易数据下载 编辑:程序博客网 时间:2024/05/29 18:24

确定比赛名次,算很简单的拓扑排序了。领接矩阵表示。


#include<iostream>   using namespace std;int map[501][501];int degree[501];int main()  {int i,j,k;int n,m,p1,p2;bool f;while(cin>>n>>m){memset(map,0,sizeof(map));memset(degree,0,sizeof(degree));for(i=1;i<=m;i++){cin>>p1>>p2;if(!map[p1][p2])    //判断重边,否则会出错{map[p1][p2]=1;degree[p2]++;}}f=0;         //拓扑排序for(i=1;i<=n;i++)    //进行n次处理以便处理完所有点{for(j=1;j<=n;j++) //找到度为0的点{if(degree[j]==0){degree[j]--;   //对应度数递减,避免下次再处理if(f==0){cout<<j;f=1;}else cout<<" "<<j;for(k=1;k<=n;k++) //去除和度数为0的点相连的边,即读书减一    if(map[j][k]==1)    degree[k]--;break;}}}cout<<endl;}    return 0;  }


0 0
原创粉丝点击