```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 500005;
int n, id, head[N], tot, cnt, dfn[N], low[N], ans1, ans2 = 1, rt, gg, num, gnum, root;
bool flag[N], cut[N];
int maxn = -1;
struct jc{
int to, net;
}e[N];
void add(int x, int y) {
e[++tot].to = y;
e[tot].net = head[x];
head[x] = tot;
}
void Tarjan(int x, int f) {
dfn[x] = low[x] = ++cnt;
for (int i = head[x]; i; i = e[i].net) {
int y = e[i].to;
if (!dfn[y]) {
Tarjan(y, x);
low[x] = min(low[x], low[y]);
if (low[y] >= dfn[x]) {
if (x != root) cut[x] = 1;
else rt++;
}
}
else if (y != f) low[x] = min(low[x], dfn[y]);
}
}
void dfs(int x) {
flag[x] = gg;
if (cut[x]) return;
num++;
for (int i = head[x]; i; i = e[i].net) {
int y = e[i].to;
if (cut[y] && flag[y] != gg) {
gnum++;
flag[y] = gg;
}
if (!flag[y]) dfs(y);
}
}
signed main() {
while(cin >> n && n != 0) {
memset(head, 0, sizeof(head));
memset(flag, 0, sizeof(flag));
memset(dfn, 0, sizeof(dfn));
memset(low, 0, sizeof(low));
memset(cut, 0, sizeof(cut));
ans1 = tot = cnt = 0;
ans2 = 1;
id++;
for (int i = 1; i <= n; i++) {
int x, y;
cin >> x >> y;
add(x, y);
add(y, x);
maxn = max(maxn, max(x, y));
}
for (int i = 1; i <= maxn; i++) {
if (!dfn[i]) {
root = i;
Tarjan(i, 0);
if (rt >= 2) cut[i] = 1;
rt = 0;
}
}
for (int i = 1; i <= maxn; i++) {
if (!flag[i] && !cut[i]) {
++gg;
num = gnum = 0;
dfs(i);
if (!gnum) {
cout << num << '\n';
ans1 += 2;
ans2 *= (num - 1) * num / 2;
}
else if (gnum == 1) {
ans1 += 1;
ans2 *= num;
}
}
}
cout << "Case " << id << ": ";
cout << ans1 << ' ' << ans2 << '\n';
}
return 0;
}
```
by kaceqwq @ 2023-03-28 19:11:50
@[kaceqwq](/user/527992) 怎么 flag 是个bool 哦,坤坤
by Acerakoi @ 2023-03-28 19:47:17
@[kaceqwq](/user/527992) 把 `bool flag[N], cut[N];` 改成
`int flag[N], cut[N];` 就有 80 高分
by Acerakoi @ 2023-04-11 19:58:05
@[kaceqwq](/user/527992) ` cout << num << '\n';` 调试没删, 90pts
by Acerakoi @ 2023-04-11 20:07:00
@[Acerkaio](/user/514850) 感谢大佬
by kaceqwq @ 2023-04-11 20:11:41
@[kaceqwq](/user/527992) IIIIIIII KKKKKNNNOOWWWW THTHTHTHTHAT!!!!!!!!!!!!!!!!!!!!!!
it is "maxn = 0;";
by Acerakoi @ 2023-04-13 19:01:07
@[kaceqwq](/user/527992) if you delete what in front of the last case. it will run rightly.
so : there is something wrong on storing.
by Acerakoi @ 2023-04-13 19:01:41
thanks
by kaceqwq @ 2023-04-13 19:03:48
@[kaceqwq](/user/527992) 可以在机房当面说的其实
by Acerakoi @ 2023-04-13 19:05:12