알고리즘

#크루스칼 #include #include #include using namespace std;const int MAX = 1001;const int INF = 1e9;int parent[MAX];int Find(int a) { if (parent[a] == a) return a; return parent[a] = Find(parent[a]); // 경로 압축 기법}void Union(int a, int b) { a = Find(a); b = Find(b); if (a != b) parent[b] = a; // 부모를 갱신하여 연결}int main() { ios_base::sync_with_stdio(0); cin.tie(0); int N, M; cin >..
#include #include #include using namespace std;vector tree;vector a;int N, Q;// 세그먼트 트리 구축void build() { for (int i = 0; i 0; --i) { tree[i] = tree[i 1) { where >>= 1; tree[where] = tree[where >= 1; right >>= 1; } return sum;}int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> Q; a.resize(N); tree.resi..