HDOJ 1285 确定比赛名次(拓扑排序,四种实现方法)

<span style="font-size:12px;">#include<cstdio>#include<cstring>int ans[510][510];//记录两人是否进行了比赛 int n,indegree[510];//记录前驱个数 int queue[510];//保存拓扑void tuopu(){int i,j,top,k=0;for(j=0;j<n;++j){for(i=1;i<=n;++i){if(indegree[i]==0)//前驱为零即是当前第一名{top=i;break;}}queue[k++]=top;//当前第一名入队列indegree[top]=-1;//前驱数量更新为-1,,避免重复入队列for(i=1;i<=n;++i){if(ans[top][i])//将前驱中含有当前第一名的前去数量减一indegree[i]–;}}for(i=0;i<k-1;++i)printf("%d ",queue[i]);printf("%d\n",queue[n-1]);}int main(){int i,a,b,m;while(scanf("%d%d",&n,&m)!=EOF){memset(indegree,0,sizeof(indegree));memset(ans,0,sizeof(ans));for(i=0;i<m;++i){scanf("%d%d",&a,&b);if(ans[a][b]==0){ans[a][b]=1;//记录是否进行了比赛indegree[b]++;//记录前驱数量}}tuopu();} return 0;}</span>

不要再以任何人说你,因为你不是为任何人而活,你只为自己而活,

HDOJ 1285 确定比赛名次(拓扑排序,四种实现方法)

相关文章:

你感兴趣的文章:

标签云: