답안 #743516

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
743516 2023-05-17T13:10:48 Z maomao90 Viruses (BOI20_viruses) C++17
0 / 100
1 ms 340 KB
    // Hallelujah, praise the one who set me free
    // Hallelujah, death has lost its grip on me
    // You have broken every chain, There's salvation in your name
    // Jesus Christ, my living hope
    #include <bits/stdc++.h> 
    using namespace std;
     
    #define REP(i, s, e) for (int i = (s); i < (e); i++)
    #define RREP(i, s, e) for (int i = (s); i >= (e); i--)
    template <class T>
    inline bool mnto(T& a, T b) {return a > b ? a = b, 1 : 0;}
    template <class T>
    inline bool mxto(T& a, T b) {return a < b ? a = b, 1: 0;}
    typedef long long ll;
    typedef long double ld;
    #define FI first
    #define SE second
    typedef pair<int, int> ii;
    typedef pair<ll, ll> pll;
    typedef tuple<int, int, int> iii;
    #define ALL(_a) _a.begin(), _a.end()
    #define SZ(_a) (int) _a.size()
    #define pb push_back
    typedef vector<int> vi;
    typedef vector<ll> vll;
    typedef vector<ii> vii;
    typedef vector<iii> viii;
     
    #ifndef DEBUG
    #define cerr if (0) cerr
    #endif
     
    const int INF = 1000000005;
    const ll LINF = 1000000000000000005ll;
    const int MAXN = 105;
    const int MAXM = 55;
     
    int g, n, m;
    int a[MAXN], k[MAXN];
    int b[MAXN][MAXN];
    int l[MAXM];
    int c[MAXM][MAXM];
     
    namespace st1 {
        int d[MAXN];
        void main() {
            d[0] = d[1] = 1;
            REP (i, 2, g) {
                d[i] = INF;
            }
            while (1) {
                bool gd = 0;
                REP (i, 0, n) {
                    int sm = 0;
                    REP (j, 0, k[i]) {
                        sm += d[b[i][j]];
                        mnto(sm, INF);
                    }
                    if (mnto(d[a[i]], sm)) {
                        gd = 1;
                    }
                }
                if (!gd) {
                    break;
                }
            }
            REP (i, 2, g) {
              if (d[i] == 0) {
                cout << "YES\n";
              } else {
                cout << "NO " << d[i] << '\n';
            }
            }
        }
    }
     
    int main() {
    #ifndef DEBUG
        ios::sync_with_stdio(0), cin.tie(0);
    #endif
        cin >> g >> n >> m;
        REP (i, 0, n) {
            cin >> a[i] >> k[i];
            REP (j, 0, k[i]) {
                cin >> b[i][j];
            }
        }
        REP (i, 0, m) {
            cin >> l[i];
            REP (j, 0, l[i]) {
                cin >> c[i][j];
            }
        }
        if (m == 0) {
            st1::main();
            return 0;
        }
    }
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -