結果
問題 | No.2319 Friends+ |
ユーザー | prin_kemkem |
提出日時 | 2023-05-27 20:17:48 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,914 bytes |
コンパイル時間 | 307 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 90,496 KB |
最終ジャッジ日時 | 2024-06-07 19:18:05 |
合計ジャッジ時間 | 19,317 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 99 ms
80,128 KB |
testcase_01 | AC | 105 ms
80,000 KB |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | AC | 311 ms
89,216 KB |
testcase_05 | WA | - |
testcase_06 | AC | 310 ms
89,216 KB |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | AC | 100 ms
80,256 KB |
testcase_18 | AC | 246 ms
84,352 KB |
testcase_19 | AC | 273 ms
90,496 KB |
testcase_20 | AC | 317 ms
84,224 KB |
testcase_21 | AC | 314 ms
84,352 KB |
testcase_22 | AC | 314 ms
84,224 KB |
testcase_23 | AC | 288 ms
87,296 KB |
testcase_24 | AC | 296 ms
86,016 KB |
testcase_25 | AC | 298 ms
84,992 KB |
testcase_26 | AC | 315 ms
84,736 KB |
testcase_27 | AC | 315 ms
84,608 KB |
testcase_28 | AC | 312 ms
84,608 KB |
testcase_29 | AC | 327 ms
84,480 KB |
testcase_30 | AC | 312 ms
84,480 KB |
testcase_31 | AC | 365 ms
84,352 KB |
testcase_32 | AC | 364 ms
84,352 KB |
testcase_33 | AC | 379 ms
84,736 KB |
testcase_34 | AC | 368 ms
84,352 KB |
testcase_35 | AC | 322 ms
84,608 KB |
testcase_36 | AC | 277 ms
90,496 KB |
testcase_37 | AC | 253 ms
88,960 KB |
testcase_38 | AC | 329 ms
90,112 KB |
testcase_39 | AC | 315 ms
89,216 KB |
testcase_40 | AC | 323 ms
89,216 KB |
testcase_41 | AC | 322 ms
89,216 KB |
testcase_42 | AC | 339 ms
89,344 KB |
testcase_43 | AC | 320 ms
89,216 KB |
testcase_44 | AC | 318 ms
89,472 KB |
testcase_45 | AC | 310 ms
89,344 KB |
testcase_46 | AC | 251 ms
88,832 KB |
ソースコード
from collections import defaultdict, deque, Counter import copy from itertools import combinations, permutations, product, accumulate, groupby from heapq import heapify, heappop, heappush import math import bisect from pprint import pprint from random import randint import sys # sys.setrecursionlimit(700000) input = lambda: sys.stdin.readline().rstrip('\n') inf = float('inf') mod1 = 10**9+7 mod2 = 998244353 def ceil_div(x, y): return -(-x//y) ################################################# class UnionFind: #コンストラクタ def __init__(self, n): self.n = n self.parents = [-1]*n #点xの根を調べる+親が根になるよう移動 def find(self, x): if self.parents[x] < 0: return x else: self.parents[x] = self.find(self.parents[x]) return self.parents[x] #点x,yの属する集合同士を連結(要素数が少ない方を多い方に連結) #辺を追加したらTrue, しなければFalseを返す def union(self, x, y): x = self.find(x) y = self.find(y) if x == y: return False if self.parents[x] > self.parents[y]: x, y = y, x self.parents[x] += self.parents[y] self.parents[y] = x return True #点xが属する集合の要素数を取得 def size(self, x): return -self.parents[self.find(x)] #点x,yが同じ集合に属しているか判定 def same(self, x, y): return self.find(x) == self.find(y) #点xの属する集合の全要素を取得 def members(self, x): root = self.find(x) return [i for i in range(self.n) if self.find(i) == root] #根になっている全要素を取得 def roots(self): return [i for i, x in enumerate(self.parents) if x < 0] #集合の数を取得 def group_count(self): return len(self.roots()) #全集合の「根と全要素」を取得 def get_groups(self): groups = defaultdict(list) for x in range(self.n): groups[self.find(x)].append(x) return groups #print(インスタンス)で、全集合の「根と全要素」を出力 def __str__(self): return '\n'.join('{}:{}'.format(r, self.menbers(r)) for r in self.roots()) N, M = map(int, input().split()) P = list(map(lambda x: int(x)-1, input().split())) members = [defaultdict(int) for _ in range(N)] uf = UnionFind(N) for _ in range(M): a, b = map(int, input().split()) a -= 1; b -= 1 uf.union(a, b) for i, p in enumerate(P): members[p][uf.find(i)] += 1 Q = int(input()) for _ in range(Q): x, y = map(int, input().split()) x -= 1; y -= 1 if P[x] != P[y] and members[P[y]][uf.find(x)]: print("Yes") members[P[x]][uf.find(x)] -= 1 members[P[y]][uf.find(x)] += 1 P[x] = P[y] else: print("No")