第九回 アルゴリズム実技検定 G - 連結 ~UF解法~

#include <atcoder/dsu>
using namespace atcoder; // 忘れがち

ll mat[100][100];

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    // input
    ll N,Q;
    cin>>N>>Q;

    while(Q--){
      ll ty;cin>>ty;

      if(ty==1){
        // edge
        ll u,v;cin>>u>>v;u--;v--;
        mat[u][v] = 1 - mat[u][v];
        mat[v][u] = 1 - mat[v][u];
      }
      else{
        dsu uf(N);
        rep(i,N){
          FOR(j,i+1,N){
            if(mat[i][j])uf.merge(i,j);
          }
        }
        ll u,v;cin>>u>>v;u--;v--;
        if(uf.same(u,v)){
          p("Yes");
        }else{
          p("No");
        }
      }
    }

    return 0;
}