문제 번호 1844. -- [ 2024 데이터구조 실습 ] MST - Kruskal

1844: [ 2024 데이터구조 실습 ] MST - Kruskal

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 430  해결 문제 수: 93
[제출][채점 상황 열람][게시판]

문제 설명

#include <stdio.h>

#define NV 5    // number of vertices <-- 이것은 고정이니 수정 금지

/*
*  아래 2개 함수를 구현하시오. 전역변수 등은 필요에 따라 선언 가능
* 
   1) void addEdge (int graph[][NV], int v1, int v2, int w)
      - vertex v1과 v2 사이에 weight w인 edge를 추가한다.
	  - edge는 undirected이다.

   2) void MST_BY_KRUSKAL(int graph[][NV])
      
	  - parameter로 주어진 graph에 대한 minimum spanning tree를 Kruskal알고리즘으로 구한다.
	  - MST를 구하는 과정에서, cycle 형성 때문에 MST에 포함되지 않는 edge (vertex A와 B사이)가 생기면
      - A + B 값을 출력한다. 이러한 edge들이 발생할 때 마다 A+B값을 출력하되, 각 출력들은 줄바꿈으로 구분한다.
	  - 예를 들어, vertex 0과 1사이의 edge, 3과 4사이의 edge가 여기에 해당되면 
      - 1\n7\n (1과 7이 각각 다른 줄에 출력)
       	  

*/

// ---------------------- 이하 절대 수정 금지 -----------------------------------

int main(void) {

	int v1 = 0;
	int v2 = 0;
	int w = 0;
	int graph[NV][NV] = { 0 };

	while (1) {

		scanf("%d %d %d", &v1, &v2, &w);
		
		if (v1 < 0) {
			break;
		}
		addEdge(graph, v1, v2, w);

	}

	MST_BY_KRUSKAL(graph);

	return 0;

}

입력

출력

도움말

출처

[제출][채점 상황 열람]