Climber.pI的OI之路

Through the darkest dark,may we see the light.

UVa 10305

拓扑排序
虽然AC了,但还是觉得自己很不在状态.

 1#include<stdio.h>
 2#include<string.h>
 3bool G[110][110];
 4int in[110], m, n;
 5struct stack{
 6    int q[110], t;
 7    stack() {memset(q, 0sizeof(q)); t= 0;}
 8    void push(int x) {q[++t] = x;}
 9    int pop() {return q[t--];}
10    bool empty() {return t ? 0 : 1;}
11}
;
12void toposort(){
13    stack s;
14    int p[110], t = 0, i, j;
15    bool flag[110= {0};
16    for (;;){
17        if (t == m) break;
18        for (i = 1; i <= m; i++)
19            if (!in[i] && !flag[i]) s.push(i);
20        while (!s.empty()){
21            i = s.pop();
22            p[++t] = i; 
23            flag[i] = 1;
24            for (j = 1; j <= m; j++)
25                if (G[i][j]) in[j]--;
26        }

27    }

28    for (i = 1; i < t; i++)
29        printf("%d ", p[i]);
30    printf("%d\n", p[t]);
31}

32int main(){
33    int i, x, y; 
34    while (scanf("%d%d"&m, &n) == 2 && (m || n)){
35        memset(G, 0sizeof(G));
36        memset(in0sizeof(in));
37        for (i = 1; i <= n; i++){
38            scanf("%d%d"&x, &y);
39            G[x][y] = 1;
40            in[y]++;
41        }

42        toposort();
43    }

44}

45

posted on 2010-09-23 21:43 Climber.pI 阅读(267) 评论(0)  编辑 收藏 引用 所属分类: 图论


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理