Submission #38547026
Source Code Expand
// LUOGU_RID: 101224846
#include <bits/stdc++.h>
using namespace std;
namespace vbzIO{
char ibuf[(1 << 20) + 1], *iS, *iT;
#if ONLINE_JUDGE
#define gh() (iS == iT ? iT = (iS = ibuf) + fread(ibuf, 1, (1 << 20) + 1, stdin), (iS == iT ? EOF : *iS++) : *iS++)
#else
#define gh() getchar()
#endif
#define reg register
#define pb push_back
#define pi pair<int, int>
#define fi first
#define se second
#define mp make_pair
inline int read () {
reg char ch = gh();
reg long long x = 0;
reg char t = 0;
while (ch < '0' || ch > '9') t |= ch == '-', ch = gh();
while (ch >= '0' && ch <= '9') x = (x << 1) + (x << 3) + (ch ^ 48), ch = gh();
return t ? -x : x;
}
inline void write(int x) {
if (x < 0) {
x = ~(x - 1);
putchar('-');
}
if (x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
}
using vbzIO::read;
using vbzIO::write;
const int maxn = 55;
int T, n, fa[maxn][2], vis[maxn], in[maxn], lf[maxn];
struct edge { int u, v; } e[maxn];
vector<int> a[maxn], b[maxn], g[maxn], leaf;
void init() {
memset(fa, 0, sizeof(fa));
memset(vis, 0, sizeof(vis));
memset(in, 0, sizeof(in));
for (int i = 1; i <= n; i++) g[i].clear();
}
void dfs(int u, int fat, int fl) {
fa[u][fl] = fat;
int flg = 0;
for (int v : (!fl ? a[u] : b[u])) {
flg++;
if (v == fat) continue;
dfs(v, u, fl);
}
if (flg == 1 && !fl) lf[u] = 1;
}
void solve() {
n = read();
for (int i = 1; i <= n; i++) b[i].clear(), a[i].clear(), lf[i] = 0;
for (int i = 1, u, v; i <= n - 1; i++) {
u = read(), v = read(), e[i] = { u, v };
a[u].pb(v), a[v].pb(u);
}
for (int i = 1, u, v; i <= n - 1; i++) {
u = read(), v = read();
b[u].pb(v), b[v].pb(u);
}
init();
dfs(1, 0, 0);
dfs(1, 0, 1);
int fl = 1;
leaf.clear();
for (int i = 1; i <= n; i++)
if (lf[i]) leaf.push_back(i);
for (int i = 1; i <= n; i++)
if (fa[i][0] ^ fa[i][1]) fl = 0;
if (fl) return puts("0"), void();
int res = 1e9;
for (int rt : leaf) {
for (int nr = 1; nr <= n; nr++) {
if (rt == nr) continue;
// int rt = 3, nr = 1;
for (int i = 1; i <= n; i++) a[i].clear();
for (int i = 1; i <= n - 1; i++) {
if (e[i].u == rt || e[i].v == rt) continue;
a[e[i].u].pb(e[i].v), a[e[i].v].pb(e[i].u);
}
a[nr].pb(rt), a[rt].pb(nr);
init(), dfs(rt, 0, 0), dfs(rt, 0, 1);
// for (int i = 1; i <= n; i++) cout << fa[i][0] << " " << fa[i][1] << endl;
int cnt = 0;
for (int i = 1; i <= n; i++)
if (fa[i][0] ^ fa[i][1]) vis[i] = 1, cnt++;
fl = 0;
for (int i = 1; i <= n; i++) {
if (!vis[i] && vis[fa[i][0]]) {
// cout << i << endl;
fl = 1;
break;
}
}
// cout << cnt << endl;
// if (fl) return puts("-1"), void();
if (fl) continue;
for (int i = 1; i <= n; i++) {
if (!vis[i]) continue;
if (vis[fa[i][0]]) g[i].pb(fa[i][0]), in[fa[i][0]]++;
if (vis[fa[i][1]]) g[fa[i][1]].pb(i), in[i]++;
}
int sum = 0;
queue<int> q;
for (int i = 1; i <= n; i++)
if (vis[i] && !in[i]) q.push(i), sum++;
while (!q.empty()) {
int u = q.front(); q.pop();
for (int v : g[u]) {
in[v]--;
if (!in[v]) q.push(v), sum++;
}
}
if (sum != cnt) continue;
// if (sum + 1 == 5) cout << rt << " " << nr << endl;
res = min(res, sum + 1), fl = 1;
}
}
write(res == 1e9 ? -1 : res);
puts("");
}
int main() {
T = read();
while (T--) solve();
return 0;
}
Submission Info
Submission Time
2023-02-02 18:55:43+0900
Task
F - Grafting
User
luogu_bot5
Language
C++ (GCC 9.2.1)
Score
1900
Code Size
4229 Byte
Status
AC
Exec Time
45 ms
Memory
3604 KiB
Compile Error
./Main.cpp: In function ‘int vbzIO::read()’:
./Main.cpp:19:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
19 | reg char ch = gh();
| ^~
./Main.cpp:20:23: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
20 | reg long long x = 0;
| ^
./Main.cpp:21:18: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
21 | reg char t = 0;
| ^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1900 / 1900
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt
All
sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
7 ms
3432 KiB
sample_02.txt
AC
2 ms
3512 KiB
test_01.txt
AC
41 ms
3456 KiB
test_02.txt
AC
36 ms
3388 KiB
test_03.txt
AC
35 ms
3508 KiB
test_04.txt
AC
37 ms
3592 KiB
test_05.txt
AC
34 ms
3600 KiB
test_06.txt
AC
37 ms
3504 KiB
test_07.txt
AC
39 ms
3600 KiB
test_08.txt
AC
36 ms
3596 KiB
test_09.txt
AC
36 ms
3592 KiB
test_10.txt
AC
38 ms
3456 KiB
test_11.txt
AC
17 ms
3580 KiB
test_12.txt
AC
16 ms
3560 KiB
test_13.txt
AC
16 ms
3540 KiB
test_14.txt
AC
19 ms
3376 KiB
test_15.txt
AC
15 ms
3456 KiB
test_16.txt
AC
15 ms
3380 KiB
test_17.txt
AC
17 ms
3584 KiB
test_18.txt
AC
8 ms
3436 KiB
test_19.txt
AC
10 ms
3492 KiB
test_20.txt
AC
16 ms
3524 KiB
test_21.txt
AC
43 ms
3548 KiB
test_22.txt
AC
36 ms
3444 KiB
test_23.txt
AC
42 ms
3604 KiB
test_24.txt
AC
44 ms
3400 KiB
test_25.txt
AC
40 ms
3596 KiB
test_26.txt
AC
44 ms
3444 KiB
test_27.txt
AC
39 ms
3448 KiB
test_28.txt
AC
41 ms
3452 KiB
test_29.txt
AC
44 ms
3448 KiB
test_30.txt
AC
45 ms
3452 KiB