这是两份代码,代码实际内容是完全相同的:
s[u] != s[v] ? fa[find(u)] = find(v) : vis[u] = vis[v] = 1, Fa[Find(u)] = Find(v), g[u].push_back(v), g[v].push_back(u);
if (s[u] != s[v]){
fa[find(u)] = find(v);
}else {
vis[u] = vis[v] = 1;
Fa[Find(u)] = Find(v);
g[u].push_back(v);
g[v].push_back(u);
}
但是在题目实现中,使用第一份代码是正确的,第二份代码是错误的。
机房同学说是三目运算符的执行逻辑问题,但试了一下好像不太对。
求助第二份代码的错误原因/第一份代码的正确原因。
题目是 P10572 [JRKSJ R8] +1-1
完整代码:Link(上述提到的代码均在 add 函数内)