Submission #967470

# Submission time Handle Problem Language Result Execution time Memory
967470 2024-04-22T07:19:57 Z Tuanlinh123 Bitaro’s Party (JOI18_bitaro) C++17
14 / 100
2000 ms 176468 KB
#include<bits/stdc++.h>
#define ll int
#define pll pair<ll, ll>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ld long double
#define sz(a) ((ll)(a).size())
using namespace std;

const ll maxn=100005, s=200;
ll deg[maxn], seen[maxn];
vector <pll> best[maxn];
vector <ll> A[maxn], At[maxn];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    ll n, m, q; cin >> n >> m >> q;
    for (ll i=1; i<=m; i++)
    {
        ll u, v; cin >> u >> v;
        A[u].pb(v), At[v].pb(u), deg[v]++;
    }
    queue <ll> Q;
    for (ll i=1; i<=n; i++)
        if (!deg[i]) Q.push(i);
    while (sz(Q))
    {
        ll u=Q.front(); Q.pop();
        if (sz(At[u]))
        {
            vector <pll> val; 
            best[u]=best[At[u][0]];
            for (ll i=1; i<sz(At[u]); i++)
            {
                ll v=At[u][i];
                for (ll p1=0, p2=0; p1<sz(best[u]) || p2<sz(best[v]);)
                {
                    if (p1==sz(best[u]) || (p2<sz(best[v]) && best[u][p1]<best[v][p2]))
                        val.pb(best[v][p2]), p2++;
                    else val.pb(best[u][p1]), p1++;
                }
                best[u].clear();
                for (auto [x, v]:val)
                    if (!seen[v])
                    {
                        seen[v]=1, best[u].pb({x, v});
                        if (sz(best[u])==s) break;
                    }
                for (auto [x, v]:best[u]) seen[v]=0;
                val.clear();
            }
        }
        for (auto &[x, v]:best[u]) x++;
        if (sz(best[u])<s) best[u].pb({0, u});
        for (ll v:A[u])
        {
            deg[v]--;
            if (!deg[v]) Q.push(v);
        }
    }
    for (ll i=1; i<=q; i++)
    {
        ll X, x, ans=-1; cin >> X >> x;
        vector <ll> a(x);
        for (ll &i:a) cin >> i;
        if (x>=s)
        {
            queue <ll> q;
            vector <ll> dp(n+5, 0), deg(n+5, 0);
            for (ll i=1; i<=n; i++) deg[i]=sz(At[i]), !deg[i]?q.push(i),0:0;
            for (ll i:a) dp[i]=-1e9;
            while (sz(q))
            {
                ll u=q.front(); q.pop();
                for (ll v:At[u]) 
                    dp[u]=max(dp[u], dp[v]+1);
                for (ll v:A[u])
                {
                    deg[v]--;
                    if (!deg[v]) q.push(v);
                }
            }
            if (dp[X]>=0) ans=dp[X];
        }
        else
        {
            for (ll j:a) seen[j]=1;
            for (auto [x, v]:best[X])
                if (!seen[v]) {ans=x; break;}
            for (ll j:a) seen[j]=0;
        } 
        cout << ans << "\n";
    }
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 7256 KB Output is correct
2 Correct 2 ms 7260 KB Output is correct
3 Correct 2 ms 7516 KB Output is correct
4 Correct 2 ms 7260 KB Output is correct
5 Correct 4 ms 8028 KB Output is correct
6 Correct 4 ms 8028 KB Output is correct
7 Correct 4 ms 8028 KB Output is correct
8 Correct 6 ms 9136 KB Output is correct
9 Correct 7 ms 9052 KB Output is correct
10 Correct 7 ms 9052 KB Output is correct
11 Correct 7 ms 9048 KB Output is correct
12 Correct 5 ms 8792 KB Output is correct
13 Correct 7 ms 9092 KB Output is correct
14 Correct 6 ms 8540 KB Output is correct
15 Correct 5 ms 8284 KB Output is correct
16 Correct 5 ms 8544 KB Output is correct
17 Correct 8 ms 8948 KB Output is correct
18 Correct 6 ms 8540 KB Output is correct
19 Correct 6 ms 8880 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 7256 KB Output is correct
2 Correct 2 ms 7260 KB Output is correct
3 Correct 2 ms 7516 KB Output is correct
4 Correct 2 ms 7260 KB Output is correct
5 Correct 4 ms 8028 KB Output is correct
6 Correct 4 ms 8028 KB Output is correct
7 Correct 4 ms 8028 KB Output is correct
8 Correct 6 ms 9136 KB Output is correct
9 Correct 7 ms 9052 KB Output is correct
10 Correct 7 ms 9052 KB Output is correct
11 Correct 7 ms 9048 KB Output is correct
12 Correct 5 ms 8792 KB Output is correct
13 Correct 7 ms 9092 KB Output is correct
14 Correct 6 ms 8540 KB Output is correct
15 Correct 5 ms 8284 KB Output is correct
16 Correct 5 ms 8544 KB Output is correct
17 Correct 8 ms 8948 KB Output is correct
18 Correct 6 ms 8540 KB Output is correct
19 Correct 6 ms 8880 KB Output is correct
20 Correct 449 ms 13100 KB Output is correct
21 Correct 447 ms 13140 KB Output is correct
22 Correct 451 ms 13136 KB Output is correct
23 Correct 491 ms 13344 KB Output is correct
24 Correct 517 ms 162148 KB Output is correct
25 Correct 521 ms 164692 KB Output is correct
26 Correct 540 ms 165456 KB Output is correct
27 Correct 503 ms 176468 KB Output is correct
28 Correct 456 ms 176212 KB Output is correct
29 Correct 450 ms 176212 KB Output is correct
30 Correct 453 ms 175372 KB Output is correct
31 Correct 471 ms 173284 KB Output is correct
32 Correct 465 ms 175440 KB Output is correct
33 Correct 436 ms 126816 KB Output is correct
34 Correct 423 ms 114772 KB Output is correct
35 Correct 424 ms 126296 KB Output is correct
36 Correct 471 ms 156204 KB Output is correct
37 Correct 474 ms 151752 KB Output is correct
38 Correct 464 ms 156500 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 7256 KB Output is correct
2 Correct 2 ms 7260 KB Output is correct
3 Correct 2 ms 7516 KB Output is correct
4 Correct 2 ms 7260 KB Output is correct
5 Correct 4 ms 8028 KB Output is correct
6 Correct 4 ms 8028 KB Output is correct
7 Correct 4 ms 8028 KB Output is correct
8 Correct 6 ms 9136 KB Output is correct
9 Correct 7 ms 9052 KB Output is correct
10 Correct 7 ms 9052 KB Output is correct
11 Correct 7 ms 9048 KB Output is correct
12 Correct 5 ms 8792 KB Output is correct
13 Correct 7 ms 9092 KB Output is correct
14 Correct 6 ms 8540 KB Output is correct
15 Correct 5 ms 8284 KB Output is correct
16 Correct 5 ms 8544 KB Output is correct
17 Correct 8 ms 8948 KB Output is correct
18 Correct 6 ms 8540 KB Output is correct
19 Correct 6 ms 8880 KB Output is correct
20 Correct 449 ms 13100 KB Output is correct
21 Correct 447 ms 13140 KB Output is correct
22 Correct 451 ms 13136 KB Output is correct
23 Correct 491 ms 13344 KB Output is correct
24 Correct 517 ms 162148 KB Output is correct
25 Correct 521 ms 164692 KB Output is correct
26 Correct 540 ms 165456 KB Output is correct
27 Correct 503 ms 176468 KB Output is correct
28 Correct 456 ms 176212 KB Output is correct
29 Correct 450 ms 176212 KB Output is correct
30 Correct 453 ms 175372 KB Output is correct
31 Correct 471 ms 173284 KB Output is correct
32 Correct 465 ms 175440 KB Output is correct
33 Correct 436 ms 126816 KB Output is correct
34 Correct 423 ms 114772 KB Output is correct
35 Correct 424 ms 126296 KB Output is correct
36 Correct 471 ms 156204 KB Output is correct
37 Correct 474 ms 151752 KB Output is correct
38 Correct 464 ms 156500 KB Output is correct
39 Correct 552 ms 163288 KB Output is correct
40 Correct 524 ms 163664 KB Output is correct
41 Correct 510 ms 162888 KB Output is correct
42 Correct 1078 ms 164584 KB Output is correct
43 Correct 559 ms 163416 KB Output is correct
44 Correct 472 ms 14420 KB Output is correct
45 Correct 455 ms 13652 KB Output is correct
46 Correct 469 ms 13500 KB Output is correct
47 Correct 518 ms 13472 KB Output is correct
48 Correct 454 ms 13152 KB Output is correct
49 Correct 624 ms 176404 KB Output is correct
50 Correct 579 ms 175484 KB Output is correct
51 Correct 467 ms 14164 KB Output is correct
52 Correct 450 ms 13324 KB Output is correct
53 Correct 549 ms 155988 KB Output is correct
54 Correct 490 ms 151376 KB Output is correct
55 Correct 509 ms 154728 KB Output is correct
56 Correct 457 ms 151380 KB Output is correct
57 Correct 469 ms 14164 KB Output is correct
58 Correct 475 ms 14484 KB Output is correct
59 Correct 451 ms 13396 KB Output is correct
60 Correct 456 ms 13548 KB Output is correct
61 Correct 787 ms 176264 KB Output is correct
62 Correct 1024 ms 156684 KB Output is correct
63 Correct 1029 ms 151088 KB Output is correct
64 Correct 1404 ms 176328 KB Output is correct
65 Execution timed out 2037 ms 156280 KB Time limit exceeded
66 Halted 0 ms 0 KB -