#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
#define MAX_V 1001
#define INF 99999999
using namespace std;
int N, M, K, sum, idx;
int parent[MAX_V];
vector<pair<int, pair<int, pair<int, int>>>> edges; //순서대로 가중치, 선택여부, u, v
struct UnionFind
{
int getParent (int x)
{
if (parent[x] == x) return x;
return parent[x] = getParent(parent[x]);
}
void unionParent (int a, int b)
{
a = getParent(a);
b = getParent(b);
if (a < b) parent[b] = a;
else parent[a] = b;
}
int findParent (int a, int b)
{
a = getParent(a);
b = getParent(b);
if (a == b) return 1;
else return 0;
}
};
int kruskal (int V)
{
int minDist = INF;
int ret = 0;
UnionFind uf;
for (int i = 0; i < edges.size(); i++)
{
int cost = edges[i].first;
int selected = edges[i].second.first;
int u = edges[i].second.second.first, v = edges[i].second.second.second;
if (uf.findParent(u, v)) continue;
else
{
if (!selected)
{
if (minDist > cost)
{
minDist = cost;
idx = i;
}
uf.unionParent(u, v);
ret += cost;
}
}
}
if (edges[idx].first == edges[idx + 1].first)
{
edges[idx].second.first = true;
edges[idx + 1].second.first = true;
}
else if (edges[idx - 1].first == edges[idx].first)
{
edges[idx].second.first = true;
edges[idx + 1].second.first = true;
}
return ret;
}
bool isAllConnected()
{
int base = parent[1];
for (int i = 2; i <= N; i++)
if (base != parent[i]) return false;
return true;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> M >> K;
for (int i = 1; i <= M; i++)
{
int u, v;
cin >> u >> v;
edges.push_back(make_pair(i, make_pair(false, make_pair(u, v))));
edges.push_back(make_pair(i, make_pair(false, make_pair(v, u))));
}
sort(edges.begin(), edges.end());
bool flag = false;
while (K--)
{
if (!flag)
{
for (int i = 1; i <= N; i++)
parent[i] = i;
sum = kruskal(N);
if (isAllConnected())
{
cout << sum << ' ';
}
else
{
flag = true;
cout << 0 << ' ';
}
}
else
{
cout << 0 << ' ';
}
}
return 0;
}
왜그런거죠ㅛ...? 도와주세요 PS 고수님들
isallconnected 함수에서 parent 배열에서 값을 가져올게아니라 getparent로 가져와야하지 않을까 아님 ralo - dc App
형님 사랑합니다