제출 #1307570

#제출 시각아이디문제언어결과실행 시간메모리
1307570bbeksneckkTug of War (BOI15_tug)Pypy 3
23 / 100
193 ms59100 KiB
import sys

def m():
    z=sys.stdin.read().split()
    if not z:return
    it=iter(z)
    try:
        n=int(next(it))
        k=int(next(it))
    except StopIteration:return

    g=[[]for _ in range(2*n+1)]
    d=[0]*(2*n+1)
    e=[]
    
    for i in range(2*n):
        u=int(next(it))
        v=int(next(it))+n
        s=int(next(it))
        e.append([u,v,s,0])
        g[u].append(i)
        g[v].append(i)
        d[u]+=1
        d[v]+=1

    q=[i for i in range(1,2*n+1) if d[i]==1]
    h=0
    diff=0

    while h<len(q):
        u=q[h]
        h+=1
        if d[u]==0:continue
        idx=-1
        for x in g[u]:
            if not e[x][3]:
                idx=x
                break
        if idx<0:continue
        
        c=e[idx]
        c[3]=1
        w=c[2]
        if u<=n:diff+=w
        else:diff-=w
        
        v=c[1] if c[0]==u else c[0]
        d[u]-=1
        d[v]-=1
        if d[v]==1:q.append(v)

    p=[]
    for i in range(1,2*n+1):
        if d[i]==0:continue
        if d[i]!=2:
            print("NO")
            return
        curr=i
        val=0
        while d[curr]>0:
            idx=-1
            for x in g[curr]:
                if not e[x][3]:
                    idx=x
                    break
            if idx<0:break
            c=e[idx]
            c[3]=1
            w=c[2]
            if curr<=n:val+=w
            else:val-=w
            nxt=c[1] if c[0]==curr else c[0]
            d[curr]=0
            curr=nxt
        diff+=val
        p.append(abs(val*2))

    b=1
    for x in p:
        b|=(b<<x)
    
    mn=diff-k
    mx=diff+k
    l=max(0,mn)
    
    if l>mx:
        print("NO")
    else:
        chk=(1<<(mx-l+1))-1
        if(b>>l)&chk:print("YES")
        else:print("NO")

if __name__=='__main__':
    m()

컴파일 시 표준 출력 (stdout) 메시지

Compiling 'tug.py'...

=======
  adding: __main__.pyc (deflated 42%)

=======
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...