专题四 · 1003

Posted suamfadmp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专题四 · 1003相关的知识,希望对你有一定的参考价值。

代码及解释

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>

// 上课讲的一道题
// 并查集的思考:
// 一种并查集是上课的时候老师讲的
// 这种并查集的查询效率很快
// 但是更新的速度比较慢
// 实际上另外一种是查询效率慢
// 更新速度很快
// 这两种可以应用于不同的场景

using std::cin;
using std::cout;
using std::endl;

const int SIZE = 1500;

int set[SIZE];

int find_set(int x) 
  int r = x;
  while (set[r] != r)
    r = set[r];
  return r;


void merge(int x, int y) 
  x = find_set(x);
  y = find_set(y);
  if (x != y)
    set[x] = y;


int main() 
  int n, m;
  while (cin >> n && n) 
    for (int i = 1; i <= n; i++)
      set[i] = i;

    cin >> m;

    while (m--) 
      int x, y;
      scanf("%d %d", &x, &y);
      merge(x, y);
    

    int count = -1;
    for (int i = 1; i <= n; i++)
      if (set[i] == i)
        count++;

    printf("%d\\n", count);
  

以上是关于专题四 · 1003的主要内容,如果未能解决你的问题,请参考以下文章

专题四:自定义Web浏览器

SQL语句复习专题四

kuangbin专题四 : 最短路 I 题 Arbitrage

[专题四] 并查集

专题四 · 1001

专题四.文件基础知识