program main integer*8::N,M,K,i,j,l,src,dest integer*8,allocatable::road(:,:) integer*8,allocatable::list(:,:,:) integer*8,allocatable::listnum(:) integer*8,allocatable::keiro(:) integer*8,allocatable::han1(:),han2(:) integer*8::ryoukin, num, tmp read *,N,M,K allocate(road(3,M)) allocate(list(2,N,N)) allocate(listnum(N)) allocate(keiro(K)) allocate(han1(N)) allocate(han2(N)) read *, road read *, keiro han1 = 1 han2 = 0 list = 0 listnum = 0 do i=1,M src = road(1,i) dest = road(2,i) ryoukin = road(3,i) listnum(src) = listnum(src) + 1 listnum(dest) = listnum(dest) + 1 list(1, src, listnum(src)) = dest list(1, dest, listnum(dest)) = src list(2, src, listnum(src)) = ryoukin list(2, dest, listnum(dest)) = ryoukin end do do i=1, K ryoukin = keiro(i) do j=1, N if(han1(j).eq.1) then tmp = listnum(j) do l=1, tmp if(list(2,j,l).eq.ryoukin) then han2(list(1,j,l)) = 1 end if end do end if end do han1 = han2 han2 = 0 end do num = SUM(han1) print '(i0)', num do i=1,N if(han1(i).eq.1) then num = num - 1 if(num.ne.0) then write(6,'(i0,a)',advance='no') i, " " else write(6,'(i0)') i end if end if end do end program main