请问这两份代码有什么区别嘛
查看原帖
请问这两份代码有什么区别嘛
396974
Buried_Dream楼主2022/7/12 08:14

一个是用 cnt0,cnt1cnt_0,cnt_1 存。

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,cnt2cnt_1,cnt_2 存。

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,上面的样例都过不了

2022/7/12 08:14
加载中...