adfsfsf   5년 전

이전 글에 더해서, 최대한 시간 소모를 줄이려고 해 보았습니다. 어디에서 오류가 나는 것인지 알고 싶습니다.

kimsy96   5년 전

long long 자료형을 쓰는 이유가 뭔가요 

adfsfsf   5년 전

노드의 수가 많아서 표현할 수 없을 것이라 생각했었습니다. 그런데 생각해보니 1000까지니까 long으로도 충분할 것 같네요. 런타임 에러는 그것과는 별개인 것 같습니다. 아래는 수정한 코드입니다.

kimsy96   5년 전

음 이문제는 우선 한 정점에서 bfs나 dfs로 연결된 점들을 다 탐색해서 방문한 점을 체크한 뒤(연결요소 하나 일단 구하고) 아직 체크 안 한 점을 찾아서 같은 방식으로 탐색해서 체크하는 문제입니다. 정점의 수와 간선의 수가 모두 int범위 이내이고 심지어 구하여야 하는 건 연결요소의 개수라서 당연히 int 범위안에 들어갈 겁니다 

간선이 많다고 생각하신다면 인접리스트를 구현해서 풀면 될것이고..

런타임에러이유는 잘 모르겠지만 저 부분 간선을 정렬하는 부분이 굳이 있어야하는지는 잘 모르겠네요 

adfsfsf   5년 전

런타임 에러 원인을 알아냈습니다. 아래와 같은 경우에 문제가 생깁니다.

N= 1000, M = 2000일 때

간선이 아래와 같으면

1 2

1 3

1 4

1 5

...

1 1000

2 3

2 4

2 5

2 6

...

2 1000

3 4

3 5

이런 경우에는 제 코드에 따르면 q1에 1000개를 초과하는 개수의 값이 들어가서 런타임 에러가 납니다.

간선을 정렬한 이유는 속도를 높이기 위해서입니다.


댓글을 작성하려면 로그인해야 합니다.