杭电 1285

来源:互联网 发布:网络刷客兼职可信吗 编辑:程序博客网 时间:2024/05/17 06:02

基础拓扑排序,错在没有考虑重复输入


#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;


int M[510][510],in[510],ans[510];
int n;


void init()
{
    memset(M,0,sizeof(M));
    memset(in,0,sizeof(in));
    memset(ans,0,sizeof(ans));
}


void topsort()
{
    for(int i=1;i<=n;i++){
        int j = 1;
        while(in[j]!=0&&j<=n) j++;
        if(j>n) return;
        in[j]=-1;
        ans[i]=j;
        for(int k=1;k<=n;k++){
            if(M[j][k]) in[k]--;
        }


    }
}


int main()
{
   int m;
   while(cin>>n>>m){
    init();
    while(m--){
            int x,y;
            cin>>x>>y;
            if(!M[x][y]){
                 M[x][y]=1;
                 in[y]++;
            }//错这了。


    }
    topsort();
    printf("%d",ans[1]);
    for(int i=2;i<=n;i++){
            printf(" %d",ans[i]);
    }
    puts("");
   }
}

0 0
原创粉丝点击