HDU1285---确定比赛名次

来源:互联网 发布:2016淘宝销售排行榜 编辑:程序博客网 时间:2024/06/06 00:49

刚开始被题目吓到了:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前

然后做着发现其实依次输出就可以了。。。

#include<stdio.h>#include<algorithm>#include<string.h>#include<stack>#include<queue>#define ll __int64#define M 100007using namespace std;#define mem(a) memset(a,0,sizeof(a))int n,m,map[510][510],in[510],k,out[510];void topsort(){    for(int i=1;i<=n;i++)    {        int j=1;        while(in[j]!=0&&j<=n)        j++;        out[i]=j;        in[j]=-1;        for(int k=1;k<=n;k++)        {            if(map[j][k]==1)            in[k]--;        }    }}int main(){    while(scanf("%d%d",&n,&m)!=EOF){        mem(in);mem(map);        int a,b;        for(int i=1;i<=m;i++){            scanf("%d%d",&a,&b);            if(!map[a][b])            {map[a][b]=1;            in[b]++;}        }    topsort();    for(int i=1;i<n;i++)        printf("%d ",out[i]);    printf("%d\n",out[n]);    }}


 

0 0
原创粉丝点击