NP를 수행하십시오 : 가장 큰 파벌을 찾으십시오


22

배경

이 글을 쓰는 시점에서 P 대 NP 문제는 여전히 해결되지 않았지만, Norbert Blum의 새로운 논문에 대해 이미 잘못되었다고 의심되는 P! = NP라는 증거를 들었을 것입니다.

이 백서에서 논의 된 문제는 파벌 문제 입니다. 적어도 그것이 신문 기사에서 읽은 것이므로 틀렸다면 수정하십시오. 어쨌든 다음 변형을 해결하는 프로그램을 작성하고 싶습니다.

작업

많은 학생들이있는 큰 학교가 있다고 가정 해 봅시다. 이 학생들은이 학교에 친구가 있습니다. 학생들 의 명단서로 친구 인 학생으로 만 구성된 그룹 입니다.

귀하의 프로그램은 입력으로 친구 인 학생 쌍을 받게됩니다. 이 정보에서 프로그램은 가장 큰 도관크기를 찾아야합니다 . 학생들은 정수 ID 로 식별됩니다 .

수학적 용어를 선호하는 경우 방향이없는 그래프의 가장자리가 각각 두 개의 노드로 식별된다는 의미입니다.

입력

입력은 비어 있지 않은 양의 정수 쌍 목록입니다 (예 :) [[1,2],[2,5],[1,5]]. 예를 들어 배열 배열, 각각 두 개의 숫자를 포함하는 텍스트 줄 등의 합리적인 형식으로이 입력을 취할 수 있습니다.

산출

예상되는 출력은 단일 숫자 n >= 2입니다. 최대 크릭의 크기입니다. 위의 입력 예를 사용하면 3모든 학생 ( 및 )이 서로 친구 1이므로 결과는 입니다.25

테스트 사례

[[1,2]]
=> 2

[[1,2],[3,1],[3,4]]
=> 2

[[1,2],[2,5],[1,5]]
=> 3

[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])

[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])

[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
 [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
 [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
 [1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])

다른 테스트 사례의 결과를 확인 하기 위해이 (멍청한) 참조 구현 ( -d플래그로 추가 출력을 인쇄 )을 사용할 수 있습니다 .

규칙

  1. 프로그램은 유효하지 않은 입력에 대해 정의 된 결과가 필요하지 않습니다. 따라서 다음과 같이 가정 할 수 있습니다.
    • 항상 적어도 한 쌍 의 ID를 얻 습니다.
    • 각 쌍은 서로 다른 두 개의 ID로 구성됩니다.
    • 쌍이 두 번 나타나지 않음 (ID의 자리를 바꾸는 것은 여전히 ​​동일한 쌍입니다)
  2. 알고리즘이 입력 크기의 상한을 설정할 수 없습니다. 언어 / 환경에 의해 설정된 순수한 기술적 한계와 한계 (예 : 스택 크기, 계산 시간 등)는 물론 불가피합니다.
  3. 표준 허점은 금지되어 있습니다.
  4. 이것은 이므로 바이트 단위로 측정 된 가장 짧은 코드가 우선합니다.
  5. 알고리즘에 다항식 시간 복잡성 -1이있는 경우 코드 크기에 관계없이 즉시 점수를 매기 지만이 경우 다른 곳에 솔루션을 제출할 수 있습니다. ;)

4
나는 그것을 할 (또는 시도하는) 누군가가있을 것이라고 거의 보증 할 수 있으므로 그것을 제거하는 것이 더 안전 할 것입니다. 사람들에게 보상을 해주고 싶다면 다항식 시간을 제공하는 최단 답변에 현상금 을 제공 할 수 있습니다 .
caird coinheringaahing

4
누군가가 그것을 않는 경우 @cairdcoinheringaahing의가 -1있다 잘 자격 )
펠릭스 Palmen을

13
@cairdcoinheringaahing 누군가가 P = NP임을 증명할 수 있다면 코드 골프 문제에서 자동으로 가장 낮은 점수를받는 사람들이 우리의 관심사 중 가장 적은 것입니다. 즉, 규칙 5는 실제로 도전 과제에 크게 기여하지 않으므로 제거해야한다는 데 동의합니다.
Mego

11
@Mego 는 CMI가 제공하는 1M에 농담 과 작은 보너스를 제공합니다.
Felix Palmen 2012 년

30
글쎄, 나는 "과학적인 유머"에 대한 감각을 가진 소수의 사람들에게 유리하지 않을 것이다. 이에 대해 더 많은 제안을 말하지 마십시오. 감사합니다 :)
Felix Palmen

답변:


6

젤리 ,  15 18  16 바이트

내 방법의 버그를 수정하기 위해 +3 바이트.
-2 마일 덕분 바이트 (것을주의 × N을 (N-1) ÷ 2 = NC2 )

ẎQL©c2⁼Lȧ®
ŒPÇ€Ṁ

우정 (가장자리) 목록을 가져와 정수를 반환하는 monadic 링크.

온라인으로 사용해보십시오! 메모리에서 에지의 전력 세트를 형성하므로 공간과 시간 모두에서 비효율적입니다 (예, O (2 n ) 사람들)!

방법?

ẎQL©c2⁼Lȧ® - Link 1, isClique?: list, edges  e.g. [[1,3],[2,3],[3,4],[4,1],[4,2],[2,1]]
Ẏ          - tighten                              [ 1,3 , 2,3 , 3,4 , 4,1 , 4,2 , 2,1 ]
 Q         - de-duplicate (gets unique ids)          [1,3,2,4]
  L        - length (get number of people involved)  4
   ©       - (copy to the register)
    c2     - combinations of 2 (z-choose-2)          6
       L   - length (of edges)                       6
      ⁼    - equal?                                  1
         ® - recall value from register              4
        ȧ  - logical and                             4
           - (Note: the number of edges of a clique of size n is n*(n-1) and we're
           -  guaranteed no repeated edges and that all edges are two distinct ids)

ŒPÇ€Ṁ - Link: list of lists, edges
ŒP    - power-set (all possible sets of edges (as lists))
  Ç€  - call last link (1) as a monad for €ach
    Ṁ - maximum

와우, 시간이 있으면 설명해주세요
Mr. Xcoder

@EriktheOutgolfer 동의합니다. 아마 구제에 코드를 추가 할 수 있습니다 ...
Jonathan Allan



@ 마일-좋은, 나는 단지 15에서 그것을 얻으려고 노력하는 동안 시간을 ​​보냈다. 나는 그것이 가능해야한다고 생각한다!
Jonathan Allan

13

Mathematica, 34 바이트

Tr[1^#&@@FindClique[#<->#2&@@@#]]&  

기본적으로 FindClique 는 작업을 수행하고 "그래프 g에서 가장 큰 도둑을 찾습니다".
다른 모든 것들은 입력 목록을 그래프로 변환합니다.

입력

[{{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}}]

산출

4

입력

[{{1296, 316}, {1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, {1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565 , 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}]

산출

6

-10 바이트에 대한 고맙습니다 @Kelly Lowder


23
물론 Mathematica는이를 위해 내장되어 있습니다.
아웃 골퍼 Erik 13

1
10 바이트 면도Tr[1^#&@@FindClique[#<->#2&@@@#]]&
켈리 Lowder

12
FindCliqueಠ ___ ಠ
Mr. Xcoder

6

젤리 , 20 바이트

ŒPẎ€µQL’=ċЀ`ẠµÐfṪQL

온라인으로 사용해보십시오!

물론 이것은 백만을받을 자격이 없습니다 : p

µ(...)µ그리고 2 바이트 가 아니라면 Pyth를 이겼습니다 Ðf.


놀랄 만한. 나는 지금도 포기할지도 모른다.
마크 토마스

@FelixPalmen brute force : p
아웃 골퍼 Erik

@EriktheOutgolfer 나는 코드의 런타임을 의미하지 않았다;)
Felix Palmen

@FelixPalmen 내 말은, 무차별 대입 접근 방식은 많은 생각이 필요하지 않습니다. p
Outgolfer Erik

테스트 사례가 가장 큰 MemoryError 를 제공합니다 .
펠릭스 Palmen을

3

J , 36 바이트

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#

온라인으로 사용해보십시오!

시간에서 실행 O (2 N ) 여기서, N 은 쌍의 수입니다.

65 바이트에 대한 더 빠른 솔루션은

3 :'$>{._2{~.@((+.&(e.&y)&<|.)@(-.,-.~)&>/#&,/:~@~.@,&.>/)~^:a:y'

온라인으로 사용해보십시오!

설명

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#  Input: list of pairs
                                   #  Length
                           2      ^   2^n
                               i.@    Range [0, 2^n)
                            #:@       Binary
                         #~           Copy
      (                )@             For each
                      ,                 Flatten
                   ~.@                  Unique
                 #@                     Length
        (       )                       Dyad with RHS at previous and LHS as next
               ]                          Get RHS
             2!                           Binomial coefficient, choose 2
            =                             Equals
           [                              Get LHS
          *                               Times
         ]                                Get RHS
       #                                Length
[:>./                                 Reduce using maximum


2

파이썬 2 , 180 바이트

G=input()
m=0
L=len
for i in range(2**L(G)):
 u=[];p=sum([G[j]for j in range(L(G))if 2**j&i],u)
 for j in p:u+=[j][j in u:]
 m=max(m,L(u)*all(p.count(j)==L(u)-1for j in u))
print m

온라인으로 사용해보십시오!

shooqie 덕분에 -2 . Xcoder 씨께
-1 감사합니다 . 재귀 덕분에 -3 .


len변수 에 할당 하여 2 바이트를 절약 할 수 있습니다
shooqie

183 바이트 . (x not in y)의미 0**(x in y)합니다.
Mr. Xcoder

@ Mr.Xcoder 나는 그것을 줄이는 방법이 있다는 것을 알고 있었다! 감사!
Outgolfer Erik

나는 전에 그것을 사용한 적이 없었습니다. 단지 며칠 전에 내 마음을 넘어서지 만 아직 그것을 사용할 수 없었던 트릭입니다.
Mr. Xcoder

@ Mr.Xcoder 문제가되지 않는다면, 왜 작동하지 않습니까? : D BTW 교체 가능0**-~-.
Outgolfer Erik

1

Pyth, 28 바이트

l{sSef<T.{SMQm.{ft{T.Cd2yS{s

온라인으로 사용해보십시오

설명

l{sSef<T.{SMQm.{ft{T.Cd2yS{s
                         S{sQ  Get the distinct nodes in the (implicit) input.
                        y      Take every subset.
             m      .Cd2       Get the pairs...
                ft{T           ... without the [x, x] pairs...
              .{               ... as sets.
     f<T                        Choose the ones...
        .{  Q                   ... which are subsets of the input...
          SM                    ... with edges in sorted order.
    e                           Take the last element (largest clique).
l{sS                            Get the number of distinct nodes.

1

파이썬 3 , 162 159 바이트

lambda x,f=lambda x:{i for s in x for i in s}:len(f(x))if all([(y,z)in x or(z,y)in x for y in f(x)for z in f(x)if y<z])else max(c(x.difference({y}))for y in x)

온라인으로 사용해보십시오!

함수 c는 정렬 된 튜플 ({(x, y), ...}, 여기서 x는 y보다 작음) 집합의 형태로 꼭짓점을 취합니다 ."entry"라는 함수는 TIO 헤더에 있으며 정렬되지 않은 목록 형식의 목록으로 데이터를 테스트합니다 . 클릭하면 길이를 반환합니다. clique가 아닌 경우 각 꼭짓점의 꼭짓점을 빼고 정점의 최대 clique 크기를 반환합니다. TIO에서 마지막 테스트 케이스 시간 초과

업데이트 : "or (z, y) in x"부분이 itertools.chain에 싸여있는 itertools.chain 대신 "f = lambda x : {i의 경우 s의 경우 s}"에 대한 종속성을 제거하기 위해 추가되었습니다.

@Jonathan Allen 덕분에-마이너스 3 바이트



옆으로-이름을 지정할 필요가 없으므로 c제거 할 수 있습니다 c=( c=\헤더의 끝에 넣고 lambdaTIO의 코드 블록 상단에 배치해야 함 )
Jonathan Allan

또한 당신은 제거 할 수s 및 교체 s(...){*...}도 일부 공간의 제거를 허용한다.
Jonathan Allan

1
@JonathanAllan 감사, 정렬 문제
코너 존스턴


1

젤리 , 28 바이트

œ^e³;U¤
Œcç/Ðfœ|Ṣ¥/€QµÐĿ-ịḢL

온라인으로 사용해보십시오!

TIO에서 마지막 테스트 사례를 빠르게 해결할 수있는 더 빠른 솔루션.


그리고 이것이 얼마나 복잡합니까? O (2ⁿ) 보다 낮 으면 $ 1,000,000의 가치가 있습니다.
Outgolfer Erik

1
@EriktheOutgolfer, 당신은 틀 렸습니다 .O (1.1888ⁿ) 런타임 을 가진 알고리즘이 있습니다 .
rus9384

그것에 덧붙여서, 백만의 가치가 있기 위해 n, 기지에만 나타날 수 있습니다 :)
Felix Palmen

@FelixPalmen, 아니면 할 수 없습니다. 어쨌든 백만의 경우 두 진술 중 하나가 입증되어야합니다.
rus9384

1
나는 이것이 O (1.414 ^ n)라고 생각합니다. 입력이 완전한 그래프 일 때 성능이 저하 될 수 있습니다.
마일

1

자바 + 구아바 23.0, 35 + 294 = 329 바이트

import com.google.common.collect.*;
a->{int l=0,o=1,c,z=a.size();for(;o>0&l<z;){o=0;c:for(Iterable<int[]>s:Sets.combinations(a,l*(l+1)/2)){Multiset<Integer>m=TreeMultiset.create();for(int[]x:s){m.add(x[0]);m.add(x[1]);}c=m.elementSet().size();for(int e:m.elementSet())if (m.count(e)!=c-1)continue c;l+=o=1;break;}}return z<3?2:l;}

이 알고리즘은 그래프가 아니라 특정 크기의 모든 쌍의 조합을 생성하는 것입니다. 모든 쌍 조합을 다중 집합에 공급하고 모두 예상 크기 (고유 항목 수-1)인지 확인합니다. 그들이 그렇게하면, 나는 도둑을 발견하고 더 큰 것을 찾으러 간다.

Guava 라이브러리에서 새로운 combinations방법과 tool-collection-type을 사용 Multiset합니다.

언 골프

import com.google.common.collect.*;
import java.util.function.*;

public class Main {

  public static void main(String[] args) {
    ToIntFunction<java.util.Set<int[]>> f
        = a -> {
          int l = 0, o = 1, c, z = a.size();
          for (; o > 0 & l < z;) {
            o = 0;
            c:
            for (Iterable<int[]> s : Sets.combinations(a, l * (l + 1) / 2)) {
              Multiset<Integer> m = TreeMultiset.create();
              for (int[] x : s) {
                m.add(x[0]);
                m.add(x[1]);
              }
              c = m.elementSet().size();
              for (int e : m.elementSet()) {
                if (m.count(e) != c - 1) {
                  continue c;
                }
              }
              l += o = 1;
              break;
            }
          }
          return z < 3 ? 2 : l;
        };
    int[][][] tests = {
      {{1, 2}},
      {{1, 2}, {3, 1}, {3, 4}},
      {{1, 2}, {2, 5}, {1, 5}},
      {{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}},
      {{15, 1073}, {23, 764}, {23, 1073}, {12, 47}, {47, 15}, {1073, 764}},
      {{1296, 316}, {1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, {1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565, 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}
    };
    for (int[][] test : tests) {
      java.util.Set<int[]> s = new java.util.HashSet<int[]>();
      for (int[] t : test) {
        s.add(t);
      }
      System.out.println(f.applyAsInt(s));
    }
  }
}

나는 거라고 매우 참조 놀라게 임의의 그래프에서 찾기 최대 파벌을 내가 : 자바 너무 잘 알고 모르겠지만,이 코드를 분석하기 위해 나에게 시간이 걸릴 것입니다 -
펠릭스 Palmen을을

@FelixPalmen이 과제를 좋아해서 답이 무엇이든 상관 없습니다. 그러나 다항식이 아닌 경우 "-1"을 제거해도 괜찮습니다. 그렇다면 아마 몇 권의 책을 읽어보아야 할 것입니다. P
Olivier Grégoire

" 크기의 조합 x은 다항식입니다 "<-확실합니까? 나는 그것이 사용 된 방법 이라고 생각 합니다 . 반환 값은 AbstractSet반복자와 함께이며 다음 for루프는 x!내가 실수하지 않으면 이 반복 횟수 를 호출합니다 ...
Felix Palmen

수정 : x < n( n입력 세트의 전체 크기가있는 한) n!/(x!(n-x)!)여전히 다항식이 아닙니다 :)
Felix Palmen

@FelixPalmen 당신이 가장 옳을 것입니다. 또한 (전적으로 가능한) combinations방법을 만들면 얻을 수 있다고 말하고 X^n있습니까? 한편, 나는 "-1"에 대한 나의 주장을 제거합니다.
Olivier Grégoire


0

6502 머신 코드 (C64), 774703 바이트

(방금 이 작업 을 수행해야 했는데 C64는 모든 것을 할 수 있습니다 ... hehe)

16 진 덤프 :

00 C0 A9 00 A2 08 9D 08 00 CA 10 FA A2 04 9D FB 00 CA 10 FA 20 54 C0 B0 20 AD 
C9 C2 AE CA C2 20 92 C1 B0 31 8D 31 C0 AD CB C2 AE CC C2 20 92 C1 B0 23 A2 FF 
20 FE C1 90 DB 20 6A C2 20 C1 C1 B0 05 20 6A C2 50 F6 A5 FB 8D D3 C2 20 43 C1 
A9 CD A0 C2 20 1E AB 60 A2 00 86 CC 8E 61 C0 20 E4 FF F0 FB A2 FF C9 0D F0 10 
E0 0B 10 0C 9D BD C2 20 D2 FF E8 8E 61 C0 D0 E5 C6 CC A9 20 20 D2 FF A9 0D 20 
D2 FF A9 00 9D BD C2 AA BD BD C2 F0 5C C9 30 30 0E C9 3A 10 0A 9D CD C2 E8 E0 
06 F0 4C D0 E9 C9 20 D0 46 A9 00 9D CD C2 E8 8E BC C0 20 EB C0 AD D3 C2 8D C9 
C2 AD D4 C2 8D CA C2 A2 FF A0 00 BD BD C2 F0 0F C9 30 30 21 C9 3A 10 1D 99 CD 
C2 C8 E8 D0 EC A9 00 99 CD C2 20 EB C0 AD D3 C2 8D CB C2 AD D4 C2 8D CC C2 18 
60 38 60 A2 FF E8 BD CD C2 D0 FA A0 06 88 CA 30 0A BD CD C2 29 0F 99 CD C2 10 
F2 A9 00 99 CD C2 88 10 F8 A9 00 8D D3 C2 8D D4 C2 A2 10 A0 7B 18 B9 53 C2 90 
02 09 10 4A 99 53 C2 C8 10 F2 6E D4 C2 6E D3 C2 CA D0 01 60 A0 04 B9 CE C2 C9 
08 30 05 E9 03 99 CE C2 88 10 F1 30 D2 A2 06 A9 00 9D CC C2 CA D0 FA A2 08 A0 
04 B9 CE C2 C9 05 30 05 69 02 99 CE C2 88 10 F1 A0 04 0E D3 C2 B9 CE C2 2A C9 
10 29 0F 99 CE C2 88 10 F2 CA D0 D9 C8 B9 CD C2 F0 FA 09 30 9D CD C2 E8 C8 C0 
06 F0 05 B9 CD C2 90 F0 A9 00 9D CD C2 60 85 0A A4 09 C0 00 F0 11 88 B9 D5 C2 
C5 0A D0 F4 8A D9 D5 C3 D0 EE 98 18 60 A4 09 E6 09 D0 01 60 A5 0A 99 D5 C2 8A 
99 D5 C3 98 99 D5 C4 18 60 A6 0B E4 09 30 01 60 BD D5 C5 C5 0B 30 09 A9 00 9D 
D5 C5 E6 0B D0 E9 A8 FE D5 C5 8A 29 01 D0 02 A0 00 BD D5 C4 59 D5 C4 9D D5 C4 
59 D5 C4 99 D5 C4 5D D5 C4 9D D5 C4 A9 00 85 0B 18 60 A8 A5 0C D0 08 A9 20 C5 
0D F0 21 A5 0C 8D 1E C2 8D 21 C2 A5 0D 09 60 8D 1F C2 49 E0 8D 22 C2 8C FF FF 
8E FF FF E6 0C D0 02 E6 0D 18 60 86 0E 84 0F A5 0D 09 60 8D 54 C2 49 E0 8D 5F 
C2 A6 0C CA E0 FF D0 10 AC 54 C2 88 C0 60 10 02 18 60 8C 54 C2 CE 5F C2 BD 00 
FF C5 0E F0 04 C5 0F D0 E0 BD 00 FF C5 0E F0 04 C5 0F D0 D5 38 60 A2 00 86 FC 
86 FD 86 FE BD D5 C4 A8 A6 FE E4 FC 10 11 BD D5 C7 AA 20 2B C2 90 14 E6 FE A6 
FE E4 FC D0 EF A6 FD BD D5 C4 A6 FC E6 FC 9D D5 C7 E6 FD A6 FD E4 09 D0 16 A6 
FB E4 FC 10 0F A2 00 BD D5 C7 9D D5 C6 E8 E4 FC D0 F5 86 FB 60 A0 00 84 FE F0 
B5

온라인 데모

사용법 :로 시작한 sys49152다음 예를 들어 한 줄에 하나씩 쌍을 입력하십시오.

15 1073
23 764
23 1073
12 47
47 15
1073 764

입력하는 동안 Backsapce 처리 되지 않습니다 (그러나 사용하는 경우vice 입력을 에뮬레이터에 복사하여 붙여 넣기 만하면됩니다). 빈 줄을 입력하여 계산을 시작하십시오.

설명 해체 목록을 게시하기에는 너무 큽니다. 그러나 ca65 스타일 어셈블리 소스를 찾아 볼 수 있습니다 . 이 알고리즘은 매우 비효율적이며 노드의 가능한 모든 순열을 생성하며 각 에지를 통해 모든 에지를 확인하여 욕심을 만듭니다. 이것은 가능 공간 효율성O (N) (종류이 작은 RAM이있는 컴퓨터에 중요한의), 그러나이 끔찍한 런타임 효율 (*) . 이론적 한계는 최대 256 개의 노드와 최대 8192 개의 에지입니다.

  • -71 바이트 : 가장자리 및 제로 페이지 사용을 확인하기위한 최적화 된 루틴

더 나은 기능을 갖춘 더 큰 버전 ( 883 805 바이트)이 있습니다.

  • 계산 중 시각적 피드백 (노드의 각 순열은 테두리 색상을 변경 함)
  • 공간 절약을 위해 뱅크 스위칭을 사용하여 ROM에 의해 "숨겨진"RAM의 에지를 저장
  • 발견 된 최대 경사 의 크기 노드를 출력합니다.

온라인 데모

소스 찾아보기


(*) 마지막 테스트 케이스는 12 시간에서 20 시간 사이에 걸립니다. 다른 테스트 사례는 몇 분 내에 최악의 상태로 완료됩니다.

마지막 테스트 사례의 스크린 샷

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.