이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define pii pair<int, int>
#define fi first
#define se second
const int maxn = 120'000;
/*int par[1 + maxn];
int sz[1 + maxn];
void make_set(int a) {
par[a] = a;
sz[a] = 1;
}
int find_set(int a) {
if(a == par[a]) {
return a;
}
return par[a] = find_set(par[a]);
}
void union_sets(int a, int b) {
a = find_set(a), b = find_set(b);
if(sz[a] < sz[b]) {
swap(a, b);
}
sz[b] += sz[a];
par[a] = b;
}*/
int tree[1 + 4 * maxn];
void update(int v, int vl, int vr, int pos, int val) {
if(vl == vr) {
tree[v] = val;
return;
}
int mid = (vl + vr) / 2;
if(pos <= mid) {
update(2 * v, vl, mid, pos, val);
} else {
update(2 * v + 1, mid + 1, vr, pos, val);
}
tree[v] = tree[2 * v] + tree[2 * v + 1];
}
int query(int v, int vl, int vr, int ql, int qr) {
if(vl > qr || vr < ql) {
return 0;
}
if(vl == ql && vr == qr) {
return tree[v];
}
int mid = (vl + vr) / 2;
return query(2 * v, vl, mid, ql, min(qr, mid)) +
query(2 * v + 1, mid + 1, vr, max(ql, mid + 1), qr);
}
int n, q;
vector<pii > graph[1 + maxn];
int target;
bool has;
int dfs(int cur, int par, int last) {
if(cur == target) {
has = true;
}
int res = 1;
for(pii nei : graph[cur]) {
if(nei.fi == par) {
continue;
}
if(nei.se < last) {
continue;
}
res += dfs(nei.fi, cur, nei.se);
}
return res;
}
void solve() {
cin >> n >> q;
q += n - 1;
int edge_cnt = 0;
while(q--) {
string type;
cin >> type;
if(type == "S") {
int a, b;
cin >> a >> b;
edge_cnt++;
graph[a].pb({b, edge_cnt});
graph[b].pb({a, edge_cnt});
}
if(type == "Q") {
int a, b;
cin >> a >> b;
target = a;
has = false;
dfs(b, 0, 0);
if(has) {
cout << "yes";
} else {
cout << "no";
}
cout << "\n";
}
if(type == "C") {
int a;
cin >> a;
int cnt = dfs(a, 0, 0);
cout << cnt << "\n";
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |