LibreOJ #109. 並查集
阿新 • • 發佈:2017-06-25
gist tchar bre har n) logs 二次 ans lin
二次聯通門 : LibreOJ #109. 並查集
/* LibreOJ #109. 並查集 並查集 */ #include <cstdio> #define Max 4000090 #define Mod 998244353 void read (int &now) { now = 0; register char word = getchar (); while (word < ‘0‘ || word > ‘9‘) word = getchar (); while (word >= ‘0‘ && word <= ‘9‘) { now = now * 10 + word - ‘0‘; word = getchar (); } } int N, M; int father[Max]; int Find (int x) { return father[x] == x ? x : father[x] = Find (father[x]); } inline void Merge (int x, int y) { int now_1 = Find (x); int now_2 = Find (y);if (x != y) father[x] = y; return ; } inline int Query (int x, int y) { return Find (x) == Find (y); } int number[Max]; int main (int argc, char *argv[]) { read (N); read (M); int x, y, type; register int cur = 0; for (register int i = 1; i <= N; i ++) father[i]= i; long long Answer = 0; for (; M --; ) { read (type); read (x); read (y); x ++; y ++; if (type == 0) Merge (x, y); else Answer = ((Answer << 1) + Query (x, y)) % Mod; } printf ("%lld", Answer); return 0; }
LibreOJ #109. 並查集