90分求助!!
查看原帖
90分求助!!
1157431
Houjiadong楼主2024/2/29 20:40

90分求助

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 510;
int h[N], e[N], ne[N], idx, d[N],state[N];
int q[N], hh = 0, tt = -1;
int n;
void add(int a, int b) {
    e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
void topsort() {
    for (int i = 1;i<N;i++) {
        if (state[i]&&d[i] == 0) q[++tt] = i;
    }
    while (hh <= tt) {
        int a = q[hh++];
        for (int i = h[a];i != 0;i = ne[i]) {
            int b = e[i];
            d[b]--;
            if (d[b] == 0&&state[b]==1) q[++tt] = b;
        }
    }
    if (tt == n - 1) cout << "YES ";
    else cout << n-1-tt;
}
int main() {
    
    cin >> n;
    for (int i = 1;i <= n;i++) {
        int x, m;
        cin >> x >> m;
        state[x] = 1;
        while (m--) {
            int a;
            cin >> a;
            add(x, a);
            d[a]++;
        }
    }
    topsort();

}

第4个测试点re

2024/2/29 20:40
加载中...