A - 并查集【2022级专题三图论课后练习】

A - 并查集

思路

模板

注意

01串的处理

代码

点击查看代码

#include<iostream>
using namespace std;

#define X first
#define Y second

typedef pair<int,int> pii;
typedef long long LL;
const char nl = '\n';
const int N = 4e6+10;
const LL mod = 998244353;
int n,m;
int p[N];
LL ans = 0;

int find(int x){
	if(p[x] != x)p[x] = find(p[x]);
	return p[x];
}

void solve(){
	int cnt = 0;
	cin >> n >> m;
	for(int i = 1; i <= n; i ++)p[i] = i;
	while(m --){
		int op,l,r;
		cin >> op >> l >> r;
		if(op == 1){
			if(find(l)==find(r))
			{
				ans *= 2;
				ans ++;
				ans %= mod;
			}
			else
			{
				ans *= 2;
				ans %= mod;
			}
		}
		else{
			p[find(l)] = find(r);
		}
	}  
	cout << ans;
 }   

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
  
	solve();
}
posted @   Keith-  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示