結果
問題 | No.1293 2種類の道路 |
ユーザー | persimmon-persimmon |
提出日時 | 2021-02-16 10:27:34 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,594 bytes |
コンパイル時間 | 926 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 225,736 KB |
最終ジャッジ日時 | 2024-07-26 19:51:00 |
合計ジャッジ時間 | 5,794 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 39 ms
57,984 KB |
testcase_01 | AC | 38 ms
52,224 KB |
testcase_02 | AC | 40 ms
52,096 KB |
testcase_03 | AC | 41 ms
52,864 KB |
testcase_04 | AC | 42 ms
52,480 KB |
testcase_05 | AC | 39 ms
52,096 KB |
testcase_06 | AC | 40 ms
52,480 KB |
testcase_07 | AC | 40 ms
52,352 KB |
testcase_08 | AC | 40 ms
52,592 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)