diff --git a/_munhyeong/12784.cpp b/_munhyeong/12784.cpp new file mode 100644 index 00000000..655abf44 --- /dev/null +++ b/_munhyeong/12784.cpp @@ -0,0 +1,57 @@ +#include +#include + +using namespace std; + +struct Info { + int to; + int weight; +}; + +int dfs(vector &visited, vector> &edges, int start) { + visited[start] = true; + + if (start != 0 && edges[start].size() == 1) + return edges[start][0].weight; + + int need = 0; + + for (Info edge : edges[start]) { + if (visited[edge.to]) + continue; + + need += min(edge.weight, dfs(visited, edges, edge.to)); + } + + //cout << start << " " << need << "\n"; + return need; +} + +int solve() { + int N, M; + cin >> N >> M; + + vector> edges(N); + vector visited(N); + for (int i = 0; i < M; i++) { + int from, to, weight; + cin >> from >> to >> weight; + + from--; to--; + edges[from].push_back({ to, weight }); + edges[to].push_back({ from, weight }); + } + + return dfs(visited, edges, 0); +} + +int main() { + int T; + cin >> T; + + while (T--) { + cout << solve() << "\n"; + } + + return 0; +}