首页 > 学院 > 开发设计 > 正文

(拓扑排序)HDU 1285 确定比赛名次

2019-11-06 08:49:06
字体:
来源:转载
供稿:网友

查看原题

题意

拓扑排序

思路

以二维数组存储有向图,in数组记录每个点的入度,增加marked数组判断该点是否操作过

代码

#include <iostream>using namespace std;int main(int argc, char *argv[]){ int n,m,a,b; while(cin>>n>>m){ int marked[505]={0},num[505][505]={0},in[505]={0}; for(int i=0;i<m;i++){ cin>>a>>b; if(!num[a][b]){ num[a][b]=1; in[b]+=1; } } for(int i=1;i<=n;i++){ int j; for(j=1;j<=n;j++){ if(in[j]==0&&marked[j]==0){ break;//开始删入度0且没操作过的点 } } marked[j]=1; if(i!=n){ cout<<j<<" "; } else{ cout<<j<<endl; } for(int k=1;k<=n;k++){ if(num[j][k]==1){ num[j][k]=0; in[k]-=1; } } } } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表