UVA 10305 Ordering Tasks

来源:互联网 发布:java发邮件 编辑:程序博客网 时间:2024/06/05 04:06

UVA 10305 Ordering Tasks

题目大意:做一系列工作,但工作有顺序之分,比如必须完成A才能做B,要求为工作排序

解题思路:循环dfs

#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int wo[110][110];int flag[110];int m, n;int all;void dfs(int a) {    for(int i = 1; i <= m; i++) {        if(wo[i][a] == 1 && flag[i] == 0)            dfs(i);    }    printf("%d", a);    flag[a] = 1;    all++;    if(all != m)        printf(" ");}int main() {    while(cin >> m && cin >> n && m + n != 0) {        memset(flag, 0, sizeof(flag));        memset(wo, 0, sizeof(wo));        all = 0;        while(n--) {            int x, y;            cin >> x >> y;            wo[x][y] = 1;        }        for(int i = 1; i <= m; i++) {            if(flag[i] == 0)                dfs(i);        }        printf("\n");    }    return 0;}
0 0