# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
739923 | 2023-05-11T15:55:58 Z | rominanafu | Tropical Garden (IOI11_garden) | C++11 | 8 ms | 4692 KB |
#include "garden.h" #include "gardenlib.h" #include <bits/stdc++.h> #define pii pair<int,int> using namespace std; typedef long long ll; pii s[150005]; bool vis[300005]; short p_fin[300005]; ll dist[300005]; int sig[300005]; int calc_dist_fin (int act, int &fin) { if (vis[act]) return INT_MAX; if (dist[act] != -1) return dist[act]; vis[act] = true; dist[act] = calc_dist_fin(sig[act], fin) + 1; p_fin[act] = p_fin[sig[act]]; return dist[act]; } void count_routes(int n, int m, int fin, int R[][2], int queries, int G[]) { memset(s, -1, sizeof(s)); memset(dist, -1, sizeof(dist)); memset(p_fin, -1, sizeof(p_fin)); int a, b; for(int i=0; i<m; i++) { a = R[i][0]; b = R[i][1]; if (s[a].first == -1) { s[a].first = b; } else if (s[a].second == -1) { s[a].second = b; } if (s[b].first == -1) { s[b].first = a; } else if (s[b].second == -1) { s[b].second = a; } } for(int i=0; i<n; i++) { if (s[i].second == -1) s[i].second = s[i].first; sig[i] = s[i].first; if (s[s[i].first].first == i) { sig[i] += n; } sig[i+n] = s[i].second; if (s[s[i].second].first == i) { sig[i+n] += n; } } dist[fin] = 0; dist[fin+n] = 0; p_fin[fin] = fin; p_fin[fin+n] = fin+n; for(int i=0; i<n*2; i++) { if (dist[i] == -1) { memset(vis, false, sizeof(vis)); dist[i] = calc_dist_fin(i, fin); } } if (p_fin[sig[fin]] == 0) { dist[fin] = INT_MAX; } else { dist[fin] = dist[sig[fin]] + 1; p_fin[fin] = p_fin[sig[fin]]; } if (p_fin[sig[fin+n]] == 0) { dist[fin+n] = INT_MAX; } else { dist[fin+n] = dist[sig[fin+n]] + 1; p_fin[fin+n] = p_fin[sig[fin+n]]; } int x, resp, caso; for(int k=0; k<queries; k++) { resp = 0; for(int i=0; i<n; i++) { if (p_fin[i] == -1) /// nunca llegó a P o es la misma P continue; caso = G[k]; if (dist[i] <= caso) { x = i; while (caso > 0) { caso -= dist[x]; x = p_fin[x]; } if (caso == 0) { resp++; } } } answer(resp); } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 4692 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 4692 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 4692 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |