1 条题解

  • 0
    @ 2025-9-10 9:00:40

    C :

    #include <stdio.h>
    #include <string.h>
    #define N 1100000
    
    char toppled[N];
    int edges[N][2];
    unsigned se[N];
    char incoming[N];
    
    int topple(int x) {
        if(!toppled[x]) {
            int i;
            toppled[x] = 1;
            for(i = se[x]; i < N && edges[i][0] == x; i++) {
                topple(edges[i][1]);
            }
        }
    }
    int comp(const int *e1, const int *e2) {
        return *e1 - *e2;
    }
    
    char seen[N];
    int nextfin;
    int finish[N];
    void dfs(int n) {
        if(!seen[n]) {
            int i;
            seen[n] = 1;
            for(i = se[n]; i < N && edges[i][0] == n; i++) {
                dfs(edges[i][1]);
            }
            finish[n] = ++nextfin;
        }
    }
    int fincomp(const int *e1, const int *e2) {
        return finish[*e2] - finish[*e1];
    }
    int nums[N];
    int main() {
        int CASES;
        scanf("%d", &CASES);
        while(CASES--) {
            int n, m, i, cnt,l;
            memset(toppled,0,sizeof(toppled));
            memset(incoming,0,sizeof(incoming));
            memset(seen,0,sizeof(seen));
            memset(finish,0,sizeof(finish));
            scanf("%d %d %d", &n, &m, &l);
            for(i=0; i<m; i++) {
                int x, y;
                scanf("%d %d", &x, &y);
                x--; y--;
                edges[i][0] = x;
                edges[i][1] = y;
                incoming[y] = 1;
            }
            qsort(edges, m, sizeof(edges[0]), comp);
            memset(se,-1,sizeof(se));
            for(i=m-1; i>=0; i--) {
                se[edges[i][0]] = i;
            }
            for(i=0;i<l;i++) {
                int x;
                scanf("%d", &x);
                x--;
                topple(x);
            }
            cnt = 0;
            for(i=0;i<n;i++) if(toppled[i]) cnt++;
            printf("%d\n", cnt);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    3655
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者