Submission #448318

# Submission time Handle Problem Language Result Execution time Memory
448318 2021-07-29T16:57:05 Z Ozy Viruses (BOI20_viruses) C++17
0 / 100
700 ms 262148 KB
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = (a); i <= (b); i++)
#define repa(i,a,b) for(int i = (a); i >= (b); i--)
#define lli int
#define debug(a) cout << #a << " = " << a << endl
#define debugsl(a) cout << #a << " = " << a << ", "

lli g,n,m,a,b,c;
lli res[102];
vector<lli> gen[102],borr[102],anti[52];

void DFS(lli act) {

    res[act] = -1;
    bool YES = false;
    lli sum = 0;

    for (auto h : gen[act]) {
        if (h == 0 || h == 1) {
            sum++;
            borr[act].push_back(h);
            continue;
        }

        if (res[h] == 0) DFS(h);

        if (res[h] < 0) {YES = true; break;}
        else {
            sum += res[h];
            for (auto k : borr[h]) borr[act].push_back(k);
        }
    }

    if (YES) {
        res[act] = -2;
        return;
    }

    rep(i,1,m) {
        if (anti[i].size() > borr[act].size()) continue;

        rep(j,0,borr[act].size() - anti[i].size()) {
            bool igual = true;
            rep(k,j,j+anti[i].size()-1) {
                if (borr[act][k] != anti[i][k-j]) {igual = false;break;}
            }
            if (igual) {
                res[act] = -2;
                return;
            }
        }
    }

    res[act] = sum;

}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> g >> n >> m;
    rep(j,1,n) {
        cin >> a >> b;
        rep(i,1,b) {
            cin >> c;
            gen[a].push_back(c);
        }
    }
    rep(i,1,m) {
        cin >> a;
        rep(j,1,a) {
            cin >> b;
            anti[i].push_back(b);
        }
    }

    rep(i,2,g-1) if(res[i] == 0) DFS(i);

    rep(i,2,g-1) {
        if (res[i] < 0) cout << "YES\n";
        else cout << "NO " << res[i] << "\n";
    }
}

Compilation message

Viruses.cpp: In function 'void DFS(int)':
Viruses.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(i,a,b) for(int i = (a); i <= (b); i++)
      |                                       ^
Viruses.cpp:44:9: note: in expansion of macro 'rep'
   44 |         rep(j,0,borr[act].size() - anti[i].size()) {
      |         ^~~
Viruses.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(i,a,b) for(int i = (a); i <= (b); i++)
      |                                       ^
Viruses.cpp:46:13: note: in expansion of macro 'rep'
   46 |             rep(k,j,j+anti[i].size()-1) {
      |             ^~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Incorrect 0 ms 204 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Execution timed out 989 ms 262148 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Execution timed out 989 ms 262148 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Incorrect 0 ms 204 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Incorrect 0 ms 204 KB Output isn't correct
4 Halted 0 ms 0 KB -