Submission #69010025


Source Code Expand

Copy
#include <stdio.h>
#define UF_MAX 212345
int uf[UF_MAX];
void uf_init(void) {
int i;
for (i = 0; i < UF_MAX; i++) uf[i] = -1;
}
int uf_root(int node) {
if (uf[node] < 0) return node;
return uf[node] = uf_root(uf[node]);
}
int uf_size(int node) {
return -uf[uf_root(node)];
}
int uf_issame(int a, int b) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

#define UF_MAX 212345

int uf[UF_MAX];

void uf_init(void) {
	int i;
	for (i = 0; i < UF_MAX; i++) uf[i] = -1;
}

int uf_root(int node) {
	if (uf[node] < 0) return node;
	return uf[node] = uf_root(uf[node]);
}

int uf_size(int node) {
	return -uf[uf_root(node)];
}

int uf_issame(int a, int b) {
	return uf_root(a) == uf_root(b);
}

void uf_merge(int a, int b) {
	int ar = uf_root(a);
	int br = uf_root(b);
	if (ar != br) {
		int as = uf_size(ar);
		int bs = uf_size(br);
		if (as <= bs) {
			uf[br] += uf[ar];
			uf[ar] = br;
		} else {
			uf[ar] += uf[br];
			uf[br] = ar;
		}
	}
}

int N, Q;
int Query[612345][3];

int kuro_cnt[UF_MAX];
char is_kuro[UF_MAX];

int main(void) {
	int i;
	if (scanf("%d%d", &N, &Q) != 2) return 1;
	for (i = 0; i < Q; i++) {
		if (scanf("%d%d", &Query[i][0], &Query[i][1]) != 2) return 1;
		if (Query[i][0] == 1) {
			if (scanf("%d", &Query[i][2]) != 1) return 1;
		}
	}
	uf_init();
	for (i = 0; i < Q; i++) {
		switch (Query[i][0]) {
			case 1:
				{
					int u_root, v_root;
					u_root = uf_root(Query[i][1]);
					v_root = uf_root(Query[i][2]);
					if (u_root != v_root) {
						int u_kuro, v_kuro;
						u_kuro = kuro_cnt[u_root];
						v_kuro = kuro_cnt[v_root];
						uf_merge(Query[i][1], Query[i][2]);
						kuro_cnt[uf_root(Query[i][1])] = u_kuro + v_kuro;
					}
				}
				break;
			case 2:
				{
					int node = Query[i][1];
					int root = uf_root(node);
					if (is_kuro[node]) {
						is_kuro[node] = 0;
						kuro_cnt[root]--;
					} else {
						is_kuro[node] = 1;
						kuro_cnt[root]++;
					}
				}
				break;
			case 3:
				puts(kuro_cnt[uf_root(Query[i][1])] > 0 ? "Yes" : "No");
				break;
		}
	}
	return 0;
}

Submission Info

Submission Time
Task E - Reachability Query
User mikecat
Language C (gcc 12.2.0)
Score 450
Code Size 1779 Byte
Status AC
Exec Time 122 ms
Memory 10856 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 1
AC × 85
Set Name Test Cases
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt, test_81.txt, test_82.txt, test_83.txt, test_84.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 2492 KiB
test_01.txt AC 1 ms 2492 KiB
test_02.txt AC 1 ms 2416 KiB
test_03.txt AC 56 ms 9964 KiB
test_04.txt AC 56 ms 10604 KiB
test_05.txt AC 55 ms 9440 KiB
test_06.txt AC 78 ms 9768 KiB
test_07.txt AC 74 ms 9316 KiB
test_08.txt AC 90 ms 9484 KiB
test_09.txt AC 68 ms 9392 KiB
test_10.txt AC 75 ms 9412 KiB
test_11.txt AC 72 ms 9520 KiB
test_12.txt AC 65 ms 9372 KiB
test_13.txt AC 62 ms 9516 KiB
test_14.txt AC 77 ms 9520 KiB
test_15.txt AC 84 ms 9472 KiB
test_16.txt AC 66 ms 9468 KiB
test_17.txt AC 67 ms 9524 KiB
test_18.txt AC 71 ms 9496 KiB
test_19.txt AC 75 ms 9312 KiB
test_20.txt AC 58 ms 9444 KiB
test_21.txt AC 91 ms 10496 KiB
test_22.txt AC 93 ms 10496 KiB
test_23.txt AC 94 ms 10340 KiB
test_24.txt AC 95 ms 10428 KiB
test_25.txt AC 94 ms 10500 KiB
test_26.txt AC 96 ms 10416 KiB
test_27.txt AC 95 ms 10500 KiB
test_28.txt AC 92 ms 10380 KiB
test_29.txt AC 103 ms 10448 KiB
test_30.txt AC 104 ms 10440 KiB
test_31.txt AC 103 ms 10424 KiB
test_32.txt AC 103 ms 10428 KiB
test_33.txt AC 102 ms 10408 KiB
test_34.txt AC 101 ms 10452 KiB
test_35.txt AC 103 ms 10468 KiB
test_36.txt AC 101 ms 10492 KiB
test_37.txt AC 100 ms 10468 KiB
test_38.txt AC 95 ms 10452 KiB
test_39.txt AC 99 ms 10356 KiB
test_40.txt AC 90 ms 10452 KiB
test_41.txt AC 95 ms 10488 KiB
test_42.txt AC 97 ms 10412 KiB
test_43.txt AC 99 ms 10408 KiB
test_44.txt AC 99 ms 10464 KiB
test_45.txt AC 103 ms 10416 KiB
test_46.txt AC 101 ms 10488 KiB
test_47.txt AC 99 ms 10504 KiB
test_48.txt AC 101 ms 10468 KiB
test_49.txt AC 100 ms 10488 KiB
test_50.txt AC 102 ms 10460 KiB
test_51.txt AC 97 ms 10428 KiB
test_52.txt AC 104 ms 10452 KiB
test_53.txt AC 100 ms 10452 KiB
test_54.txt AC 100 ms 10408 KiB
test_55.txt AC 102 ms 10404 KiB
test_56.txt AC 100 ms 10492 KiB
test_57.txt AC 95 ms 10496 KiB
test_58.txt AC 96 ms 10460 KiB
test_59.txt AC 101 ms 10496 KiB
test_60.txt AC 100 ms 10292 KiB
test_61.txt AC 76 ms 10500 KiB
test_62.txt AC 80 ms 10548 KiB
test_63.txt AC 79 ms 10404 KiB
test_64.txt AC 77 ms 10464 KiB
test_65.txt AC 76 ms 10436 KiB
test_66.txt AC 81 ms 10736 KiB
test_67.txt AC 83 ms 10856 KiB
test_68.txt AC 81 ms 10652 KiB
test_69.txt AC 96 ms 9644 KiB
test_70.txt AC 111 ms 9932 KiB
test_71.txt AC 95 ms 9704 KiB
test_72.txt AC 106 ms 10384 KiB
test_73.txt AC 109 ms 10076 KiB
test_74.txt AC 94 ms 10192 KiB
test_75.txt AC 110 ms 10000 KiB
test_76.txt AC 76 ms 10248 KiB
test_77.txt AC 122 ms 10488 KiB
test_78.txt AC 110 ms 10456 KiB
test_79.txt AC 113 ms 10408 KiB
test_80.txt AC 111 ms 10456 KiB
test_81.txt AC 119 ms 10280 KiB
test_82.txt AC 115 ms 10504 KiB
test_83.txt AC 121 ms 10416 KiB
test_84.txt AC 107 ms 10448 KiB


2025-09-03 (Wed)
07:51:30 +09:00