Submission #567482

#TimeUsernameProblemLanguageResultExecution timeMemory
567482RealSnakeBitaro’s Party (JOI18_bitaro)C++14
14 / 100
68 ms6512 KiB
#include "bits/stdc++.h"
using namespace std;

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree<pair<int, int>, null_type, less<pair<int,int>>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

#define ll long long
#define mod 1000000007

ofstream fout(".out");
ifstream fin(".in");

vector<int> par[100001];
int dis[100001];

signed main() {

    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n, m, q;
    cin >> n >> m >> q;
    for(int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        par[v].push_back(u);
    }
    if(q == 1) {
        int t, sz;
        cin >> t >> sz;
        for(int i = 0; i < sz; i++) {
            int x;
            cin >> x;
            dis[x] = -1;
        }
        bool b = (dis[t] == -1);
        for(int i = 1; i <= t; i++) {
            for(int j : par[i]) {
                if(dis[j] != -1)
                    dis[i] = max(dis[i], dis[j] + 1);
            }
        }
        if(!dis[t] && b)
            dis[t] = -1;
        cout << dis[t];
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...