POJ 3687 Labeling Balls 反向拓扑建图是个坑点

来源:互联网 发布:oracle导入数据 编辑:程序博客网 时间:2024/04/30 02:35

还有一个坑点就是,如果之前输入过相同的a,b  那么再输入的就无效了  ,wa~~~~~~~~

#include <iostream>#include <algorithm>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;int map[300][300];int du[300];int book[300];int ans[300];int n;void Topsort(){    memset(book,0,sizeof(book));    memset(ans,0,sizeof(ans));    int i, j, k;    for(i = n;i >= 1;i--){        k = -1;        for(j = n;j >= 1;j--){            if(!book[j]&&du[j]==0){                k = j;                break;            }        }        if(k == -1){            printf("-1\n");            return;        }        book[k] = 1;        ans[k] = i;        for(j = 1;j <= n;j++){            if(map[k][j]){                du[j]--;            }        }    }    printf("%d", ans[1]);    for(i = 2;i <= n;i++){        printf(" %d", ans[i]);    }    printf("\n");}int main(){    int t;    cin >> t;    int a, b;    while(t--){        memset(du,0,sizeof(du));        memset(map,0,sizeof(map));        int m;        scanf("%d %d", &n, &m);        while(m--){            scanf("%d%d", &a, &b);            if(map[b][a] == 0){//只有之前没有输入过a b,du[a]才可以自加1                du[a]++;            }            map[b][a] = 1;        }        Topsort();    }    return 0;}


0 0
原创粉丝点击