奇安信机器学习笔试

奇安信机器学习笔试第二题:受感染节点
n=int(input())
arr=[[0] * n for _ in range(n)]
for i in range(n):
    arr[i]=list(map(int,input().split(' ')))
nums=list(map(int,input().split(' ')))

res=[n]*n
for i in range(len(nums)):
    lis=nums[0:i]+nums[i+1:]
    brr=lis
    for j in brr:
        for k in range(n):
            if arr[j][k]==1 and k not in brr:
                brr.append(k)
    res[i]=len(brr)
a=[i for i in range(len(nums)) if min(res)==res[i] ]
print(a[0])
a了75%,有大佬帮忙看看是哪种情况没考虑到么?

#笔试题目##机器学习##奇安信#
全部评论
请问你这是python?刚做的没有python语言啊😂
点赞 回复 分享
发布于 2019-09-09 20:37
你暴力a了75,我正经做a了63,我服辣,还tm是运行时错误 from collections import defaultdict, Counter from queue import deque import sys line = sys.stdin.readline() lines = sys.stdin.readlines() l = [] for  i in range(len(lines)-1):     l.append(list(map(int, lines[i].strip().split()))) init = list(map(int, lines[-1].strip().split())) from_which = defaultdict(set) q = deque() visited = set() for i in init:     q.append(i)     visited.add(i)     from_which[i].add(i) while q:     cur = q.popleft()     for i, v in enumerate(l[cur]):         if v == 1 and i != cur:             from_which[i] = from_which[i].union(from_which[cur])             if i not in visited:                 q.append(i)                 visited.add(i) result = [] for k in from_which:     if len(from_which[k]) == 1:         result.append(list(from_which[k])[0]) # init = list(filter(lambda x: len(from_which[x]) == 1, init)) c = Counter(result) r = 0 m = 0 for i in init:     if len(from_which[i]) == 1 and c[i] > m:         r = i         m = c[i] print(r)
点赞 回复 分享
发布于 2019-09-09 20:41
第一题一开始不能用python,但是神奇的是,退出再进去就可以用了耶,系统还没有提示
点赞 回复 分享
发布于 2019-09-09 20:43

相关推荐

点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务