首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

确定赛事名次 hdu 拓扑输出字典序最小解

2012-09-03 
确定比赛名次 hdu 拓扑输出字典序最小解#include stdio.h#include cstringconst int maxn501int map

确定比赛名次 hdu 拓扑输出字典序最小解

#include <stdio.h>#include <cstring>const int maxn=501;int map[maxn][maxn];int in[maxn];int ans[maxn];int main(){    int n,m,u,v;    while(scanf("%d%d",&n,&m)==2)    {        memset(in,0,sizeof(in));        memset(map,0,sizeof(map));        memset(ans,0,sizeof(ans));        for(int i=1; i<=m; i++)        {            scanf("%d%d",&u,&v);            map[u][v]=1;        }        for(int i=1; i<=n; i++)            for(int j=1; j<=n; j++)                in[j]+=map[i][j];        int i,j,k;        for(i=1; i<=n; i++)        {            for(j=1; j<=n; j++)                if(in[j]==0) break;            in[j]=-1;            ans[i]=j;            for(k=1; k<=n; k++)                in[k]-=map[j][k];//将所有和j相连的点的入度-1        }        for(int i=1; i<n; i++)            printf("%d ",ans[i]);        printf("%d\n",ans[n]);    }    return 0;}

热点排行