题目链接:
http://bailian.openjudge.cn/tm2019/F/
题面描述:
思路:
这题开了10s,所以可以暴力点,每次修复一个点,就将该点相连的那些边建出来,总的时间复杂度为: O(nm)。关键在于如何判定两个点是否是连通的。
刚开始我直接暴力DFS,发现T了,可能是用了DFS之后导致整个题的常数有点大。
另外一种高效地判别连通性的做法是并查集,我们可以在每次添加点的时候还是O(n)的建边,但是在查询连通性的时候就直接O(1)的并查集查询了。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#define ll long long
using namespace std;
const int N=1010;
struct node{
int x;