202209-3 防疫大数据

 

 

# 输入n,代表数据的天数
n = int(input())
# 设置place来存储每天的风险地区
place = {}
# 设置people来存储用户的漫游数据
people = {}
# 开始遍历每一天
for i in range(n):
    # people[i]来存储每一天的漫游信息
    people[i] = []
    # 输入当日收到的风险地区信息的数量、当日收到的漫游数据的条目数量,以及当日收到的风险地区的列表
    data = [i for i in map(int,input().split())]
    # 表示当日收到的风险地区信息的数量
    r = data[0]
    # 表示当日收到的漫游数据的条目数量
    m = data[1]
    
    if r!=0:# 存储当日收到的风险地区的列表
        for d in data[2:]:#区域号
            for q in range(i,i+7):# 遍历将从今日起的风险地区标记七日风险
                if q not in place:
                    place[q] = set()#集合
                place[q].add(d)#第q天的风险地区有d号地区
    
    if m!=0:# 接收漫游信息,并存储到people[i]中去
        for j in range(m):
            ud,u,ur = map(int,input().split())#日期、用户和地区
            if ud<0:
                continue
            people[i].append([ud,u,ur])
    
    t = max(0,i-6)# 设置t,确保日期循环最早从第0天开始
    
    out = []# 存储输出日期及用户
    
    for h in range(t,i+1):# 提取此前七天每天用户的漫游信息
        
        hu = people[h]# 用hu存储当前天的用户漫游信息
        
        for k in range(len(hu)):# 开始遍历hu中的漫游信息
            kd = hu[k][0]#日期
            ku = hu[k][1]#用户
            kr = hu[k][2]#地区
            if kd<(i-6) or kd>i:#不是风险地区
                continue
            
            temp = 1# 设置一个标签值
            
            for l in range(kd,i+1):# 判断是否持续处于风险区
                if l not in place:
                    temp = 0   
                    break
                if kr not in place[l]:
                    temp = 0   
                    break
            if temp:
                out.append(ku)#风险用户
            
            out = list(set(out))#排除重复的
            out.sort()# 将用户进行去重并从小到大排序
    # 插入日期
    out.insert(0,i)#在第0个位置插入日期i 
    print(*out)

 

posted @ 2023-03-16 19:32  吃人不吐葡萄  阅读(57)  评论(0)    收藏  举报