QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#358392#6307. Chase Game 2JCY_WA 7ms6284kbC++141.6kb2024-03-19 19:37:222024-03-19 19:37:22

Judging History

你现在查看的是最新测评结果

  • [2024-03-19 19:37:22]
  • 评测
  • 测评结果:WA
  • 用时:7ms
  • 内存:6284kb
  • [2024-03-19 19:37:22]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using i128 = __int128;
using u128 = unsigned __int128;
template <typename T>
void chkmax(T &x, const T &y) {
  if (x < y) x = y;
}
template <typename T>
void chkmin(T &x, const T &y) {
  if (y < x) x = y;
}
constexpr int MAXN = 1e5 + 10;
int n, cnt[MAXN], ans;
vector<int> g[MAXN];
void dfs(int u, int pre) {
  int one = cnt[u] = 0;
  for (auto v : g[u]) {
    if (v == pre) continue;
    if (g[v].size() == 1) ++one;
  }
  for (auto v : g[u]) {
    if (v == pre) continue;
    if (g[v].size() != 1) {
      dfs(v, u);
      int t = min(one, cnt[v]);
      ans -= t;
      one -= t;
      cnt[v] -= t;
      t = min(cnt[u], cnt[v]);
      ans -= t;
      cnt[u] -= t;
      cnt[v] -= t;
      cnt[u] += cnt[v];
    }
  }
  cnt[u] += one;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int cas;
  cin >> cas;
  for (int turn = 1; turn <= cas; ++turn) {
    cin >> n;
    for (int i = 1; i <= n; ++i) g[i].clear();
    for (int i = 1, u, v; i < n; ++i) {
      cin >> u >> v;
      g[u].emplace_back(v);
      g[v].emplace_back(u);
    }
    if (n == 2) {
      cout << "-1\n";
      continue;
    }
    int rt = 1;
    while (g[rt].size() == 1) ++rt;
    ans = 0;
    for (int i = 1; i <= n; ++i) ans += (g[i].size() == 1);
    if (ans == n - 1) {
      cout << "-1\n";
      continue;
    }
    dfs(rt, 0);
    cout << ans << "\n";
  }
  return 0;
}
/*
g++ J.cpp -o J -std=c++14 -O2 -Wall -Wextra -Wshadow -g -fsanitize=address,undefined
*/

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 5940kb

input:

4
2
1 2
4
1 2
2 3
3 4
4
1 2
2 3
2 4
5
1 2
2 3
3 4
3 5

output:

-1
1
-1
2

result:

ok 4 number(s): "-1 1 -1 2"

Test #2:

score: 0
Accepted
time: 4ms
memory: 5944kb

input:

10000
4
1 2
1 3
3 4
4
1 2
1 3
1 4
4
1 2
2 3
1 4
5
1 2
2 3
1 4
4 5
5
1 2
2 3
3 4
4 5
4
1 2
2 3
2 4
5
1 2
1 3
2 4
2 5
4
1 2
2 3
1 4
5
1 2
1 3
2 4
1 5
5
1 2
2 3
3 4
2 5
5
1 2
1 3
2 4
2 5
4
1 2
1 3
3 4
5
1 2
1 3
3 4
1 5
4
1 2
1 3
1 4
5
1 2
1 3
3 4
3 5
5
1 2
2 3
3 4
3 5
4
1 2
1 3
2 4
5
1 2
2 3
2 4
3 5
5
...

output:

1
-1
1
1
1
-1
2
1
2
2
2
1
2
-1
2
2
1
2
2
1
1
1
-1
2
2
2
1
-1
1
1
2
1
1
-1
1
2
1
1
1
-1
1
1
2
2
2
1
1
1
-1
1
2
1
1
2
1
2
1
1
2
-1
-1
-1
2
2
2
1
1
1
2
2
2
-1
1
2
-1
1
1
-1
2
-1
-1
1
2
2
2
1
1
1
1
1
1
1
1
1
2
-1
1
1
2
-1
2
1
1
1
-1
2
-1
1
-1
-1
2
-1
2
1
2
2
1
1
1
1
2
1
1
1
1
-1
2
1
2
1
1
1
1
1
1
1
2
-1...

result:

ok 10000 numbers

Test #3:

score: -100
Wrong Answer
time: 7ms
memory: 6284kb

input:

10000
9
1 2
2 3
3 4
4 5
1 6
6 7
5 8
7 9
9
1 2
2 3
2 4
1 5
2 6
4 7
6 8
1 9
9
1 2
2 3
1 4
4 5
5 6
4 7
2 8
1 9
10
1 2
2 3
1 4
3 5
3 6
2 7
6 8
6 9
6 10
10
1 2
1 3
3 4
2 5
1 6
5 7
4 8
2 9
7 10
10
1 2
2 3
2 4
1 5
3 6
6 7
5 8
4 9
9 10
9
1 2
2 3
2 4
1 5
3 6
2 7
1 8
2 9
9
1 2
1 3
2 4
1 5
3 6
3 7
7 8
8 9
10
1...

output:

1
3
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
4
3
2
3
3
3
3
4
3
3
2
3
3
3
5
3
3
3
2
3
3
3
3
4
2
3
3
3
3
4
3
2
3
2
3
2
2
4
3
4
3
4
3
3
2
2
3
2
2
3
4
3
2
3
4
3
4
3
3
3
2
4
2
2
3
3
4
3
2
3
4
2
3
3
3
4
3
2
3
2
3
3
5
3
3
2
3
4
2
3
4
2
5
3
2
3
3
2
4
2
3
4
4
4
3
2
3
4
3
2
3
3
3
3
3
3
2
3
4
3
2
4
3
3
3
4
2
3
...

result:

wrong answer 23rd numbers differ - expected: '3', found: '4'