一个是用 cnt0,cnt1 存。
vector <int> E[N];
ll col[N], cnt[5];
void dfs(int u, int c) {
cnt[c]++, col[u] = c;
for(int v : E[u])
if(!col[v]) dfs(v, 3 - c);
}
signed main()
{
int n = read();
for(int i = 1, u, v; i < n; i++)
u = read(), v = read(), E[u].push_back(v), E[v].push_back(u);
dfs(1, 1);
cout << (cnt[1] * cnt[2]) - (n - 1);
return 0;
}
一个是用 cnt1,cnt2 存。
vector <int> E[N];
ll col[N], cnt[5];
void dfs(int u, int c) {
cnt[c]++, col[u] = c;
for(int v : E[u])
if(!col[v]) dfs(v, 3 - c);
}
signed main()
{
int n = read();
for(int i = 1, u, v; i < n; i++)
u = read(), v = read(), E[u].push_back(v), E[v].push_back(u);
dfs(1, 1);
cout << (cnt[1] * cnt[2]) - (n - 1);
return 0;
}
而下面的AC,上面的样例都过不了