codejam E 2019轮中#1的运行时错误(跳过测试集)

2024-09-22 16:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

对于第E轮codejam 2019(https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050edb/0000000000170721)中的#1,我的代码可以在我的计算机上成功运行,但在联机判断中失败(跳过运行时错误测试集)。但是当我在线运行测试时,它是OK(完成的)

我该怎么解决这个问题

import numpy as np

def DG(conn1,i,A,k):    
    newk=np.concatenate((np.argwhere(conn1[:,i]==1),np.argwhere(conn1[i,:]==1)),axis=0)
    if newk.size>0:
        newk=newk.tolist()
        newk=sum(newk,[])
        k=k+newk
     # vertex conencted to i
    if len(k)!=0:
        for aa in k: # 遍历每个与i连接的node
            coco=conn1[aa,range(0,A)]
            if 1 in coco:
                return 1
            else:
                conn2=conn1.copy()
                conn2[aa,i]=0
                k.pop(0)
                return DG(conn2,aa,A,k)   # vertex connect to aa
    else:
        return 2

def solve(N,M):
    conn=np.zeros((N,N))
    for i in range(0,M):
        v1,v2=[int(s) for s in input().split(" ")]
        v1,v2=sorted([v1,v2])
        conn[v2-1,v1-1]=1  #  v1<v2
    degree=np.zeros((N,1))
    for i in range(1,N):
        temp=conn[i,range(0,i)]
        if 1 in temp: # directly connect to 0:i
            degree[i]=1
        else: # indirectly connect to 0:i
            conn1=conn.copy()     
            degree[i]=DG(conn1,i,i,[])

    return int(np.sum(degree))

case=int(input())
for k in range(1,case+1):
    N,M=[int(s) for s in input().split(" ")]
    degree=solve(N,M)
    print("Case #{}: {}".format(k, degree))

我使用官方测试如下。我可以离线得到这些正确的输出,但在线判断失败。我还尝试了一些复杂的测试用例

2
2 1
1 2
Case #1: 1
3 1
2 3
Case #2: 3

Tags: toinforreturnifnprangeconn