| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1324360 | sh_qaxxorov_571 | One-Way Streets (CEOI17_oneway) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
const int MAXN = 100005;
vector<pair<int, int>> adj[MAXN];
int tin[MAXN], low[MAXN], timer;
bool is_bridge[MAXN];
int up[MAXN][20], depth[MAXN];
int comp[MAXN], comp_cnt;
int d_up[MAXN], d_down[MAXN]; // Difference arrays
// Ko'priklarni topish (Tarjan algoritmi)
void find_bridges(int u, int p_edge = -1) {
tin[u] = low[u] = ++timer;
for (auto& edge : adj[u]) {
int v = edge.first;
int id = edge.second;
if (id == p_edge) continue;
if (tin[v]) {
low[u] = min(low[u], tin[v]);
} else {
find_bridges(v, id);
low[u] = min(low[u], low[v]);
if (low[v] > tin[u]) is_bridge[id] = true;
}
}
}
// LCA va daraxt bo'yicha yo'nalishlarni yig'ish (bu yerda kod davom etadi...)
// ...