제출 #1345504

#제출 시각아이디문제언어결과실행 시간메모리
1345504thaibaotran555Bitaro’s Party (JOI18_bitaro)C++20
7 / 100
2093 ms12052 KiB
///TRAN THAI BAO :3

#include <iostream>
#include <cstdio>
#include <vector>
#include <deque>

using namespace std;

#define maxN 200007
#define oo 2000000000

int n, m, q;
vector<int>adj[maxN];
vector<int>adj2[maxN];
int maxD[maxN];;
bool banned[maxN] = {false};

void readData()
{
    cin >> n >> m >> q;
    for(int i = 1; i <= m; i++)
    {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj2[v].push_back(u);
    }
}

void solveQuery()
{
    int root, k;
    cin >> root >> k;
    for(int i = 1; i <= n; i++)
    {
        maxD[i] = -oo;
        banned[i] = false;
    }
    for(int i = 0; i < k; i++)
    {
        int tmp;
        cin >> tmp;
        banned[tmp] = true;
    }
    maxD[root] = 0;
    deque<int>q;
    q.push_front(root);
    while(!q.empty())
    {
        int u = q.front();
        q.pop_front();
        int v;
        for(int i = 0; i < adj2[u].size(); i++)
        {
            v = adj2[u][i];
            if(maxD[u] + 1 > maxD[v])
            {
                maxD[v] = maxD[u] + 1;
                q.push_front(v);
            }
        }
    }
    int ans = -1;
    for(int i = 1; i <= n; i++)
        if(!banned[i])
            ans = max(ans, maxD[i]);
    cout << ans << '\n';
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    readData();
    while(q--)
        solveQuery();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...