コード例 #1
0
ファイル: union_find_set.cpp プロジェクト: cozilla/tools
int main(int argc, const char *argv[]) {
    UnionFindSet uf;
    uf.union_set(1,2);
    uf.union_set(1,5);
    uf.union_set(3,4);
    printf("%d\n", uf.is_same(2,5));
    printf("%d\n", uf.is_same(3,5));
    printf("%d\n", uf.is_same(1,4));
    return 0;

}
コード例 #2
0
void solve() {
  UnionFindSet ufs = UnionFindSet(N);
  int ans = 0;
  
  sort(edges.begin(), edges.end());
  
  for (int i = 0; i < M; i ++) {
    if (ufs.setCnt <= K) break;
    if (ufs.Union(edges[i].a - 1, edges[i].b - 1)) ans += edges[i].c;
  }
  
  if (ufs.setCnt <= K) {
    cout << ans << endl;
  } else {
    cout << "Impossible!" << endl;
  }
}
コード例 #3
0
ファイル: test.cpp プロジェクト: kophy/DSAF
int main() {
    UnionFindSet *u = new UnionFindSet(8);

    cout << "Original" << endl;
    u->Display();

    u->Union(0, 1);
    u->Union(1, 2);
    u->Union(3, 4);
    u->Union(4, 5);
    u->Union(0, 4);
    u->Union(6, 7);

    cout << endl;
    cout << "After Union" << endl;
    u->Display();

    delete u;
}