problemscpp
A collection of my answers to algorithm problems in c++.
| 函数
acwing::acwing859 命名空间参考

  1. Kruskal算法求最小生成树
更多...

struct  edge
 

函数

int main (istream &cin, ostream &cout)
 
 TEST (acwing859, case1)
 
 TEST (acwing859, case2)
 

详细描述

  1. Kruskal算法求最小生成树

函数说明

◆ main()

int acwing::acwing859::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing.cpp7422 行定义.

7422 {
7423 int n;
7424 int m;
7425 cin >> n >> m;
7426 int ans = 0;
7427 int cnt = 1;
7428 vector<edge> edges(m);
7429 for(int i = 0; i < m; i++) {
7430 int u;
7431 int v;
7432 int n;
7433 cin >> edges[i].u >> edges[i].v >> edges[i].w;
7434 }
7435 sort(edges.begin(), edges.end());
7436 UnionFind uf(n + 1);
7437 for(const auto &edge: edges) {
7438 if(!uf.same(edge.u, edge.v)) {
7439 cnt++;
7440 uf.unite(edge.u, edge.v);
7441 ans += edge.w;
7442 }
7443 }
7444 if(cnt < n) {
7445 cout << "impossible";
7446 } else {
7447 cout << ans;
7448 }
7449 return 0;
7450 }
并查集
Definition: templates.h:91

引用了 UnionFind::same(), acwing::acwing859::edge::u, UnionFind::unite(), acwing::acwing859::edge::v , 以及 acwing::acwing859::edge::w.

被这些函数引用 TEST().

◆ TEST() [1/2]

acwing::acwing859::TEST ( acwing859  ,
case1   
)

在文件 acwing_test.cpp3535 行定义.

3535 {
3536 istringstream in("4 5\n"
3537 "1 2 1\n"
3538 "1 3 2\n"
3539 "1 4 3\n"
3540 "2 3 2\n"
3541 "3 4 4");
3542 auto out = ostringstream();
3543 main(in, out);
3544 const auto ans = out.str();
3545 ASSERT_EQ("6", ans);
3546 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/2]

acwing::acwing859::TEST ( acwing859  ,
case2   
)

在文件 acwing_test.cpp3548 行定义.

3548 {
3549 istringstream in("10 20\n"
3550 "2 5 -6\n"
3551 "6 8 -9\n"
3552 "2 1 9\n"
3553 "10 8 2\n"
3554 "3 4 -1\n"
3555 "6 7 5\n"
3556 "1 2 6\n"
3557 "8 7 -5\n"
3558 "3 2 10\n"
3559 "10 10 9\n"
3560 "4 3 -1\n"
3561 "7 8 8\n"
3562 "3 3 6\n"
3563 "6 9 -4\n"
3564 "1 2 -9\n"
3565 "6 6 6\n"
3566 "3 2 7\n"
3567 "9 10 4\n"
3568 "4 5 -3\n"
3569 "8 9 2");
3570 auto out = ostringstream();
3571 main(in, out);
3572 const auto ans = out.str();
3573 ASSERT_EQ("impossible", ans);
3574 }

引用了 main().