UVa 10305Ordering Tasks

来源:互联网 发布:小米三可以刷4g网络吗 编辑:程序博客网 时间:2024/05/16 01:17
/*  思路:    1、图的拓扑排序    注意点:    1、1<=n<=100*/#include <cstdio>#include <cstring>const int MAX = 110;int G[MAX][MAX];int visit[MAX];int topo[MAX];int cur;int n, m;void dfs(int u){    visit[u] = 1;    for(int v=1; v<=n; v++) {        if(G[u][v] && !visit[v]) dfs(v);    }    topo[--cur] = u;}int main (){    #ifndef ONLINE_JUDGE    freopen("in.txt", "r", stdin);    #endif    while(scanf("%d%d", &n, &m)==2)    {        if(n==0 && m==0) break;        memset(G, 0, sizeof(G));        memset(visit, 0, sizeof(visit));        for(int i=0; i<m; i++) {            int u, v;            scanf("%d%d", &u, &v);            G[u][v] = 1;        }        cur = n;        for(int i=1; i<=n; i++) {            if(!visit[i]) dfs(i);        }        for(int i=0; i<n; i++) {            printf("%d ", topo[i]);        }        printf("\n");    }    return 0;}