QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#711878 | #8333. Gift | dgme-syz# | WA | 1ms | 3500kb | C++23 | 1.2kb | 2024-11-05 13:50:31 | 2024-11-05 13:50:32 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
vector<int> adj[100001];
int st[100001], ins[100001];
int fa[100001];
int ic[100001];
int cyc = 0;
void dfs(int u) {
st[u] = ins[u] = 1;
for (auto x : adj[u]) {
fa[x] = u;
if (!st[x]) dfs(x);
else if (ins[x]) {
for (int k = u;k != x;k = fa[k]) {
ic[k] = 1, ++ cyc;
}
ic[x] = 1;
++ cyc;
}
}
ins[u] = 0;
}
int d[100001];
int main() {
cin.tie(0) -> sync_with_stdio(0);
int N;cin >> N;
for (int i = 2;i <= N;i ++ ) {
int x, y;cin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
++ d[x];
++ d[y];
}
dfs(1);
int c = 0;
int p = 0;
for (int i = 1;i <= N;i ++ )
if (d[i] == 5) ++ c, p = i;
int ans = 0;
vector<bool> ok(N + 1);
for (auto x : adj[p]) ok[x] = 1;
for (int i = 1;i <= N;i ++ )
if (d[i] <= 3)
ans += (c == 2 ? ic[i] : (c == 1 ? 2 : cyc));
else if (d[i] == 4) {
if (ic[i]) {
ans += (c == 2 ? 0 : (c == 1 ? (ok[i] ? 1 : 0) : 2));
}
}
cout << ans << '\n';
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3496kb
input:
6 1 2 1 3 1 4 1 5 1 6 2 3
output:
10
result:
ok 1 number(s): "10"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3500kb
input:
3 1 3 3 2 2 1
output:
12
result:
wrong answer 1st numbers differ - expected: '9', found: '12'