提出 #66566245


ソースコード 拡げる

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
#define MaxN 3005

struct Node {
	int dis, u, v;
	bool operator < (Node t) const {
		return dis < t.dis;
	}
	bool operator > (Node t) const {
		return dis > t.dis;
	}
};

int fa[MaxN], n, m, q, x[MaxN], y[MaxN];
priority_queue < Node, vector<Node>, greater<Node> > pq;

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

void add(int j) {
	for(int i = 1; i < j; i++) {
		Node t;
		t.dis = abs(x[i]-x[j]) + abs(y[i]-y[j]);
		t.u = i;
		t.v = j;
		pq.push(t);
	}
}

int main()
{
	cin >> n >> q;
	for(int i = 1; i <= n; i++) {
		m++;
		fa[i] = i;
		cin >> x[i] >> y[i];
		add(i);
	}
	int op;
	while (q--) {
		cin >> op;
		if (op == 1) {
			n++;
			m++;
			fa[n] = n;
			cin >> x[n] >> y[n];
			add(n);
		}
		else if (op == 2) {
			if (m == 1) cout << -1 << endl;
			else {
				int now = -1;
				while(now == -1) {
					Node t = pq.top();
					pq.pop();
					if (find(t.u) == find(t.v)) continue;
					now = t.dis;
					cout << now << endl;
					fa[find(t.u)] = find(t.v);
					m--;
					while (!pq.empty() && pq.top().dis == now) {
						Node tt = pq.top();
						pq.pop();
						if (find(tt.u) != find(tt.v)) {
							fa[find(tt.u)] = find(tt.v);
							m--;
						}
					}
				}
			}
		}
		else {
			int x, y;
			cin >> x >> y;
			if (find(x) == find(y)) {
				cout << "Yes" << endl;
			}
			else cout << "No" << endl;
		}
	}
	return 0;
}

提出情報

提出日時
問題 F - Connecting Points
ユーザ gobywind
言語 C++ 20 (gcc 12.2)
得点 500
コード長 1522 Byte
結果 AC
実行時間 133 ms
メモリ 101648 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 45
セット名 テストケース
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3656 KiB
01_test_00.txt AC 34 ms 27892 KiB
01_test_01.txt AC 36 ms 27732 KiB
01_test_02.txt AC 132 ms 101648 KiB
01_test_03.txt AC 36 ms 27824 KiB
01_test_04.txt AC 72 ms 52420 KiB
01_test_05.txt AC 76 ms 52472 KiB
01_test_06.txt AC 51 ms 27740 KiB
01_test_07.txt AC 36 ms 27744 KiB
01_test_08.txt AC 53 ms 27804 KiB
01_test_09.txt AC 49 ms 27900 KiB
01_test_10.txt AC 48 ms 27808 KiB
01_test_11.txt AC 75 ms 52420 KiB
01_test_12.txt AC 35 ms 27800 KiB
01_test_13.txt AC 35 ms 27712 KiB
01_test_14.txt AC 133 ms 101620 KiB
01_test_15.txt AC 34 ms 27712 KiB
01_test_16.txt AC 71 ms 52360 KiB
01_test_17.txt AC 72 ms 52440 KiB
01_test_18.txt AC 50 ms 27812 KiB
01_test_19.txt AC 34 ms 27756 KiB
01_test_20.txt AC 49 ms 27844 KiB
01_test_21.txt AC 44 ms 27980 KiB
01_test_22.txt AC 46 ms 27820 KiB
01_test_23.txt AC 71 ms 52444 KiB
01_test_24.txt AC 67 ms 27816 KiB
01_test_25.txt AC 75 ms 27884 KiB
01_test_26.txt AC 62 ms 27880 KiB
01_test_27.txt AC 54 ms 27844 KiB
01_test_28.txt AC 75 ms 27756 KiB
01_test_29.txt AC 64 ms 27892 KiB
01_test_30.txt AC 69 ms 27844 KiB
01_test_31.txt AC 50 ms 27892 KiB
01_test_32.txt AC 60 ms 27824 KiB
01_test_33.txt AC 60 ms 27756 KiB
01_test_34.txt AC 51 ms 27748 KiB
01_test_35.txt AC 51 ms 27728 KiB
01_test_36.txt AC 54 ms 27820 KiB
01_test_37.txt AC 51 ms 27844 KiB
01_test_38.txt AC 51 ms 27744 KiB
01_test_39.txt AC 49 ms 27736 KiB
01_test_40.txt AC 74 ms 52604 KiB
01_test_41.txt AC 51 ms 27800 KiB
01_test_42.txt AC 84 ms 52376 KiB
01_test_43.txt AC 1 ms 3528 KiB