結果
問題 | No.1502 Many Simple Additions |
ユーザー |
![]() |
提出日時 | 2021-05-07 22:08:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 515 ms / 2,000 ms |
コード長 | 1,654 bytes |
コンパイル時間 | 276 ms |
コンパイル使用メモリ | 81,864 KB |
実行使用メモリ | 129,808 KB |
最終ジャッジ日時 | 2024-09-15 18:12:52 |
合計ジャッジ時間 | 7,624 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 39 |
ソースコード
import sysinput=sys.stdin.buffer.readlinesys.setrecursionlimit(10**6)N,M,K=map(int,input().split())G=[[] for i in range(N)]for i in range(M):x,y,z=map(int,input().split())x-=1y-=1G[x].append((y,z))G[y].append((x,z))A=[]ANS=1ANS2=1mod=10**9+7F=[0]*NX=[]Y=[[] for i in range(N)]V=K-1from collections import *INF=10**17for i in range(N):if F[i]:continuefor j in range(len(X)-1,-1,-1):Y[X[j]].clear()del X[j]Q=deque([(i,(1,0))])while len(Q):for _ in range(len(Q)):v=Q.popleft()X.append(v[0])F[v[0]]=1Y[v[0]].append(v[1])for j in range(len(G[v[0]])-1,-1,-1):Q.append((G[v[0]][j][0],(-v[1][0],G[v[0]][j][1]-v[1][1])))del G[v[0]][j]X=list(set(X))L,R=1,KL2,R2=1,Vfor j in range(len(X)):j=X[j]Z=[INF,INF]for k in range(len(Y[j])):if Y[j][k][0]==1:if Z[0]==INF:Z[0]=Y[j][k][1]else:if Z[0]!=Y[j][k][1]:L=K+1L2=Kelse:if Z[1]==INF:Z[1]=Y[j][k][1]else:if Z[1]!=Y[j][k][1]:L=K+1L2=Kif Z[0]<INF and Z[1]<INF:if (Z[0]^Z[1])&1:L=K+1L2=Kelse:x=(Z[1]-Z[0])>>1L=max(L,x)L2=max(L2,x)R=min(R,x)R2=min(R2,x)if Z[0]<INF:R=min(R,K-Z[0])R2=min(R2,V-Z[0])L=max(L,-Z[0]+1)L2=max(L2,-Z[0]+1)if Z[1]<INF:R=min(R,Z[1]-1)R2=min(R2,Z[1]-1)L=max(L,Z[1]-K)L2=max(L2,Z[1]-V)ANS=ANS*max(0,R-L+1)%modANS2=ANS2*max(0,R2-L2+1)%modprint((ANS-ANS2)%mod)