萌新求助

AT_abc350_g [ABC350G] Mediator

@[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


| 下一页