Codeforces Round #436 (Div. 2), problem: (F) Cities Excursions Solution In C/C++

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 3005, INF = 0x3f3f3f3f;

int n, m, q, f[N][12];
bool vis[N];

struct Edge {
int to;
Edge *next;
Edge () {}
Edge (int to, Edge *next) : to(to), next(next) {}
}*head[N], pool[N << 1], *pis = pool;

void Min (int &x, int y) { if (x > y) x = y; }

int fr[N], tt[N], ins[N];

void Dfs (int x) {
vis[x] = 1;
for (Edge *now = head[x]; now; now = now -> next) {
Min(fr[now -> to], x);
if (!vis[now -> to]) Dfs(now -> to);
}
}

void Dfs2 (int x) {
if (tt[x] != INF) return ;
if (fr[x] == INF || ins[fr[x]]) { tt[x] = -1; return ; }
ins[x] = 1;
Dfs2(fr[x]);
tt[x] = tt[fr[x]] == -1 ? -1 : tt[fr[x]] + 1;
ins[x] = 0;
}

struct E { int x, y, k, id; bool operator < (const E &rhs) const { return y < rhs.y; } }e[400005];

int i, ans[400005];

int main () {
scanf(“%d%d%d”, &n, &m, &q);
for (int i = 1, x, y; i <= m; ++i) {
scanf(“%d%d”, &x, &y);
head[y] = new (pis++) Edge(x, head[y]);
}
for (int i = 0; i < q; ++i) scanf(“%d%d%d”, &e[i].x, &e[i].y, &e[i].k), e[i].id = i;
sort(e, e + q);
for (int x, y, k, lay = -1, ans, w = q; w–; ) {
x = e[w].x; y = e[w].y; k = e[w].k;
if (lay != y) {
memset(vis, 0, sizeof vis), memset(fr, 0x3f, sizeof fr), memset(tt, 0x3f, sizeof tt), Dfs(y), tt[y] = 1;
for (i = 1; i <= n; ++i) Dfs2(i), f[i][0] = fr[i];
for (int j = 1; j < 12; ++j) for (i = 1; i <= n; ++i) if (f[i][j – 1] != INF) f[i][j] = f[f[i][j – 1]][j – 1];
}
if (fr[x] == 0x3f3f3f3f) ::ans[e[w].id] = -1;
else {
if (tt[x] == -1 || tt[x] < k) ::ans[e[w].id] = -1;
else {
–k;
for (int j = 0; j < 12; ++j) if (k >> j & 1) x = f[x][j];
::ans[e[w].id] = x;
}
// for (i = 1; i < k && x != y; ++i) x = fr[x]; if (i != k) { ::ans[e[j].id] = -1; continue ; } ans = x;
// for (; i <= 3000 && x != y; ++i) x = fr[x];
// ::ans[e[j].id] = x != y ? -1 : ans;
}
lay = y;
}
for (int i = 0; i < q; ++i) printf(“%d\n”, ans[i]);
return 0;
}

How Nature Imagined the...

How Nature Imagined the Figment of You: Alan Lightman...

Lu Dort shows love...

Oklahoma City Thunder guard Luguentz Dort has always been...

Why Everyone is Obsessed with the Vegetable Chopper Pro

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

How Nature Imagined the Figment of You

How Nature Imagined the Figment of You: Alan Lightman on Existential Probability In an era marked by rapid technological shifts and constant digital noise, a...

Why Everyone is Obsessed with the Packing Cube Set

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the White Noise Machine

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Lu Dort shows love to Thunder fans ahead of offseason: ‘It’s been amazing’

Oklahoma City Thunder guard Luguentz Dort has always been a fan favorite, known for his relentless defensive work ethic and high energy on the...

Why Everyone is Obsessed with the Electronics Cleaning Kit

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

Why Everyone is Obsessed with the Desk LED Ring Light

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...

SoftBank’s OpenAI bet and rising debt are raising liquidity crunch concerns

SoftBank Group Corp. has long been known for its high-stakes, high-reward investment strategies under the leadership of Masayoshi Son. Recently, the conglomerate's aggressive pivot...

Why Everyone is Obsessed with the Herb Scissors 5 Blade

Are you tired of dealing with everyday frustrations that slow down your routine? We've all been...