Submission #5025356
Source Code Expand
(eval-when (:compile-toplevel :load-toplevel :execute) (defparameter OPT #+swank '(optimize (speed 3) (safety 2)) #-swank '(optimize (speed 3) (safety 0) (debug 0))) #+swank (progn (ql:quickload '(:cl-debug-print :fiveam)) (shadow :run) (use-package :fiveam))) #+swank (cl-syntax:use-syntax cl-debug-print:debug-print-syntax) ;; BEGIN_INSERTED_CONTENTS ;;; ;;; Bron-Kerbosch-Tomita ;;; (defun find-max-clique (neighbors) "NEIGHBORS[i] is the bitset indicating the neighbors of the vertex I." (declare #.OPT ((simple-array (unsigned-byte 16) (*)) neighbors)) (let ((n (length neighbors)) (result-set 0) (result-size 0)) (declare ((unsigned-byte 62) result-set result-size)) (labels ((tzcount (x) (- (integer-length (logand x (- x))) 1)) (recur (r p x) (declare ((unsigned-byte 62) r p x)) (if (zerop p) (when (zerop x) (let ((size (logcount r))) (when (> size result-size) (setf result-set r result-size size)))) (let ((pivot 0) (max -1) (p-or-x (logior p x))) ;; Choose the pivot vertex in P∪X as the vertex with the ;; highest number of neighbors in P (loop for u from (tzcount p-or-x) below (integer-length p-or-x) do (when (logbitp u p-or-x) (let ((num-neighbors (logcount (logand p (aref neighbors u))))) (when (> num-neighbors max) (setf pivot u max num-neighbors))))) (let ((pivot-neighbors (logandc2 p (aref neighbors pivot)))) (unless (zerop pivot-neighbors) (loop for v from (tzcount pivot-neighbors) below (integer-length pivot-neighbors) do (when (logbitp v p) (recur (dpb 1 (byte 1 v) r) (logand p (aref neighbors v)) (logand x (aref neighbors v))) (setf (ldb (byte 1 v) p) 0 (ldb (byte 1 v) x) 1))))))))) (declare (inline tzcount)) (recur 0 (- (ash 1 n) 1) 0) result-set))) (defmacro dbg (&rest forms) #+swank (if (= (length forms) 1) `(format *error-output* "~A => ~A~%" ',(car forms) ,(car forms)) `(format *error-output* "~A => ~A~%" ',forms `(,,@forms))) #-swank (declare (ignore forms))) (defmacro define-int-types (&rest bits) `(progn ,@(mapcar (lambda (b) `(deftype ,(intern (format nil "UINT~A" b)) () '(unsigned-byte ,b))) bits) ,@(mapcar (lambda (b) `(deftype ,(intern (format nil "INT~A" b)) () '(signed-byte ,b))) bits))) (define-int-types 2 4 7 8 15 16 31 32 62 63 64) (declaim (inline println)) (defun println (obj &optional (stream *standard-output*)) (let ((*read-default-float-format* 'double-float)) (prog1 (princ obj stream) (terpri stream)))) (defconstant +mod+ 1000000007) ;; Body (defun main () (let* ((n (read)) (m (read)) (graph (make-array n :element-type 'uint16 :initial-element 0))) (declare (uint16 n m)) (dotimes (_ m) (let ((x (- (read) 1)) (y (- (read) 1))) (setf (ldb (byte 1 y) (aref graph x)) 1 (ldb (byte 1 x) (aref graph y)) 1))) (println (logcount (find-max-clique graph))))) #-swank(main)
Submission Info
Submission Time | |
---|---|
Task | D - 派閥 |
User | sansaqua |
Language | Common Lisp (SBCL 1.1.14) |
Score | 100 |
Code Size | 3836 Byte |
Status | AC |
Exec Time | 51 ms |
Memory | 11240 KB |
Judge Result
Set Name | all | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
all | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_01.txt | AC | 51 ms | 11240 KB |
00_sample_02.txt | AC | 45 ms | 10720 KB |
00_sample_03.txt | AC | 45 ms | 10724 KB |
00_sample_04.txt | AC | 45 ms | 10724 KB |
test_01.txt | AC | 45 ms | 10720 KB |
test_02.txt | AC | 45 ms | 10724 KB |
test_03.txt | AC | 46 ms | 10724 KB |
test_04.txt | AC | 45 ms | 10724 KB |
test_05.txt | AC | 45 ms | 10728 KB |
test_06.txt | AC | 45 ms | 10720 KB |
test_07.txt | AC | 45 ms | 10724 KB |
test_08.txt | AC | 45 ms | 10728 KB |
test_09.txt | AC | 45 ms | 10724 KB |
test_10.txt | AC | 45 ms | 10728 KB |
test_11.txt | AC | 45 ms | 10728 KB |
test_12.txt | AC | 45 ms | 10720 KB |
test_13.txt | AC | 45 ms | 10720 KB |
test_14.txt | AC | 45 ms | 10724 KB |
test_15.txt | AC | 45 ms | 10720 KB |
test_16.txt | AC | 45 ms | 10728 KB |
test_17.txt | AC | 45 ms | 10724 KB |
test_18.txt | AC | 45 ms | 10720 KB |
test_19.txt | AC | 45 ms | 10724 KB |
test_20.txt | AC | 45 ms | 10724 KB |
test_21.txt | AC | 45 ms | 10724 KB |
test_22.txt | AC | 45 ms | 10728 KB |
test_23.txt | AC | 45 ms | 10724 KB |
test_24.txt | AC | 45 ms | 10720 KB |
test_25.txt | AC | 45 ms | 10724 KB |
test_26.txt | AC | 45 ms | 10724 KB |
test_27.txt | AC | 45 ms | 10720 KB |
test_28.txt | AC | 45 ms | 10724 KB |
test_29.txt | AC | 45 ms | 10724 KB |
test_30.txt | AC | 45 ms | 10728 KB |
test_31.txt | AC | 45 ms | 10720 KB |
test_32.txt | AC | 45 ms | 10728 KB |
test_33.txt | AC | 45 ms | 10720 KB |
test_34.txt | AC | 45 ms | 10724 KB |
test_35.txt | AC | 45 ms | 10728 KB |
test_36.txt | AC | 45 ms | 10724 KB |
test_37.txt | AC | 45 ms | 10728 KB |
test_38.txt | AC | 45 ms | 10720 KB |
test_39.txt | AC | 45 ms | 10720 KB |
test_40.txt | AC | 45 ms | 10724 KB |
test_41.txt | AC | 45 ms | 10724 KB |
test_42.txt | AC | 45 ms | 10728 KB |
test_43.txt | AC | 45 ms | 10720 KB |
test_44.txt | AC | 45 ms | 10724 KB |
test_45.txt | AC | 45 ms | 10728 KB |
test_46.txt | AC | 45 ms | 10720 KB |
test_47.txt | AC | 45 ms | 10728 KB |
test_48.txt | AC | 45 ms | 10724 KB |
test_49.txt | AC | 45 ms | 10728 KB |
test_50.txt | AC | 45 ms | 10724 KB |
test_51.txt | AC | 45 ms | 10728 KB |
test_52.txt | AC | 45 ms | 10720 KB |
test_53.txt | AC | 45 ms | 10724 KB |
test_54.txt | AC | 45 ms | 10724 KB |
test_55.txt | AC | 45 ms | 10728 KB |
test_56.txt | AC | 45 ms | 10728 KB |
test_57.txt | AC | 45 ms | 10728 KB |
test_58.txt | AC | 45 ms | 10720 KB |
test_59.txt | AC | 45 ms | 10724 KB |
test_60.txt | AC | 45 ms | 10724 KB |
test_61.txt | AC | 45 ms | 10720 KB |
test_62.txt | AC | 45 ms | 10724 KB |
test_63.txt | AC | 45 ms | 10728 KB |
test_64.txt | AC | 45 ms | 10720 KB |
test_65.txt | AC | 45 ms | 10724 KB |
test_66.txt | AC | 45 ms | 10724 KB |
test_67.txt | AC | 45 ms | 10728 KB |
test_68.txt | AC | 45 ms | 10724 KB |
test_69.txt | AC | 45 ms | 10720 KB |
test_70.txt | AC | 45 ms | 10728 KB |