@[FL_sleake](/user/368791) 直接暴力
by Shadow_T @ 2024-04-21 13:16:09
@[FL_sleake](/user/368791) 你是萌新???
by Betrayer_of_love @ 2024-04-21 13:28:15
@[FL_sleake](/user/368791) [你这代码能 AC 啊 /yiw](https://atcoder.jp/contests/abc350/submissions/52642319)
by sunkuangzheng @ 2024-04-21 13:32:27
@[FL_sleake](/user/368791)
>萌新(?。
by xu_zhihao @ 2024-04-21 13:40:12
[没有错误,经实测](https://atcoder.jp/contests/abc350/submissions/52643098)
by __xsy2013__ @ 2024-04-21 13:59:34
@[__xsy2013__](/user/575714) @[sunkuangzheng](/user/679936) 有点离谱,,,我找找我之前的代码,我也不记得改了哪个小地方了
by FL_sleake @ 2024-04-21 14:40:37
贴一下之前的代码
```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=998244353;
int n,q,lst=0;
int fa[100010],A,B,C,sz[100010],f[100010];
vector<int> G[100010];
void dfs(int u,int Fa){
fa[u]=Fa;
for(int v:G[u]) if(v!=Fa) dfs(v,u);
}
int getfa(int x){
return (x==f[x]?x:f[x]=getfa(f[x]));
}
void Merge(int u,int v){
G[u].push_back(v);
G[v].push_back(u);
int fau=getfa(u),fav=getfa(v);
if(sz[fau]<sz[fav]) sz[fav]+=sz[fau],f[fau]=fav,dfs(u,v);
else sz[fau]+=sz[fav],f[fav]=fau,dfs(v,u);
}
signed main(){
cin>>n>>q;
for(int i=1;i<=n;i++) f[i]=fa[i]=i,sz[i]=1;
while(q--){
int a,b,c;
cin>>a>>b>>c;
A=1+((a*(1+lst)%mod))%2;
B=1+((b*(1+lst))%mod)%n;
C=1+((c*(1+lst))%mod)%n;
if(A==2){
if(fa[B]==fa[C]&&fa[B]!=B&&fa[C]!=C) lst=fa[B];
else if(fa[fa[B]]==C) lst=fa[B];
else if(fa[fa[C]]==B) lst=fa[C];
else lst=0;
cout<<lst<<endl;
}else Merge(B,C);
}
return 0;
}
```
by FL_sleake @ 2024-04-21 14:42:02
哦,我改了 $fa_i$ 的初始化
by FL_sleake @ 2024-04-21 14:44:18
@[sunkuangzheng](/user/679936) @[__xsy2013__](/user/575714) 问下为啥初始化 $fa_i=i$,询问操作改为 `fa[B]==fa[C]&&fa[B]!=B&&fa[C]!=C` 不能过/yiw
by FL_sleake @ 2024-04-21 14:45:45
@[FL_sleake](/user/368791) 如果 $fa_1=fa_2=1$,此时询问 $1,2$,答案应该是 $0$,但是你的程序会认为 $fa_{fa_2} = 1$ 所以输出 $1$ /kk
by sunkuangzheng @ 2024-04-21 14:50:44