杭电 1285

来源:互联网 发布:清华经管北大光华知乎 编辑:程序博客网 时间:2024/06/06 10:54
之前先看了拓扑排序,由于图只会用邻接矩阵,不会表,所以看了海子的博客http://www.cnblogs.com/dolphin0520/archive/2011/04/16/2017737.html,感觉写的不错,可败在考虑重边了
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;#define N 505int mapp[N][N],r[N],c[N];int main(){    int n,m,i,j,k,a,b,l;    while(scanf("%d %d",&n,&m)!=EOF&&n&&m){        memset(mapp,0,sizeof(mapp));        memset(r,0,sizeof(r));        memset(c,0,sizeof(c));        l=0;        for(i=0;i<m;i++){            scanf("%d %d",&a,&b);            if(mapp[a][b]==0){//不考虑重边            mapp[a][b]=1;            r[b]++;            }        }        for(i=1;i<=n;i++)        for(j=1;j<=n;j++)        if(r[j]==0){            r[j]--;            c[l++]=j;            for(k=1;k<=n;k++)            if(mapp[j][k])            r[k]--;            break;        }        printf("%d",c[0]);        for(i=1;i<l;i++)        printf(" %d",c[i]);        printf("\n");    }    return 0;}

0 0
原创粉丝点击