UVA 10305 Ordering Tasks

    xiaoxiao2026-09-15  1

    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; }
    转载请注明原文地址: https://ju.6miu.com/read-1312067.html
    最新回复(0)