結果
問題 | No.1293 2種類の道路 |
ユーザー | persimmon-persimmon |
提出日時 | 2021-02-16 10:27:34 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,594 bytes |
コンパイル時間 | 659 ms |
コンパイル使用メモリ | 87,108 KB |
実行使用メモリ | 218,896 KB |
最終ジャッジ日時 | 2023-10-09 21:30:28 |
合計ジャッジ時間 | 7,079 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge15 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 77 ms
75,592 KB |
testcase_01 | AC | 77 ms
70,948 KB |
testcase_02 | AC | 78 ms
71,224 KB |
testcase_03 | AC | 77 ms
71,092 KB |
testcase_04 | AC | 77 ms
70,892 KB |
testcase_05 | AC | 76 ms
71,188 KB |
testcase_06 | AC | 77 ms
71,056 KB |
testcase_07 | AC | 78 ms
70,900 KB |
testcase_08 | AC | 78 ms
71,172 KB |
testcase_09 | TLE | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
ソースコード
def main1(n,d,w,uv,st): gd=[[] for _ in range(n)] gw=[[] for _ in range(n)] for u,v in uv: u,v=u-1,v-1 gd[u].append(v) gd[v].append(u) for s,t in st: s,t=s-1,t-1 gw[s].append(t) gw[t].append(s) ret=0 # 自動車用道路連結成分 groupd=set() mi=set(range(n)) while mi: v=mi.pop() seen={v} todo={v} ntodo=set() while todo: v=todo.pop() for nv in gd[v]: if nv in mi: todo.add(nv) seen.add(nv) mi.discard(nv) for nv in gw[v]: ntodo.add(nv) num1=len(seen) # 自動車用道路で行ける都市の数 if num1==1:continue groupd|=seen seen|=ntodo while ntodo: v=ntodo.pop() for nv in gw[v]: if nv not in seen: ntodo.add(nv) seen.add(nv) num2=len(seen) # はじめの都市から到達可能なすべての都市 ret+=num1*(num2-1) # 歩行者用道路連結成分 mi=set(range(n)) while mi: v=mi.pop() todo={v} num1,num2=0,0 if v in groupd: num1+=1 else: num2+=1 while todo: v=todo.pop() for nv in gw[v]: if nv in mi: mi.discard(nv) todo.add(nv) if nv in groupd: num1+=1 else: num2+=1 ret+=num2*(num2+num1-1) return ret import sys input=sys.stdin.readline if __name__=='__main__': n,d,w=map(int,input().split()) uv=[list(map(int,input().split())) for _ in range(d)] st=[list(map(int,input().split())) for _ in range(w)] ret1=main1(n,d,w,uv,st) print(ret1)