首页 > 代码库 > HDOJ-1232 畅通工程【并查集裸题】
HDOJ-1232 畅通工程【并查集裸题】
题目传送门 : http://acm.hdu.edu.cn/showproblem.php?pid=1232
并查集的裸题
AC code:
#include <iostream> #define MAXN 1050 using namespace std; int pre[MAXN]; int Find(int pos) { int r = pos; while (r != pre[r]) r = pre[r]; int i = pos; while (i != r) { int t = pre[i]; pre[i] = r; i = t; } return r; } void Join(int posX, int posY) { int rootX = Find(posX), rootY = Find(posY); if (rootX != rootY) pre[rootX] = rootY; } int main() { int N, M; while (cin >> N >> M && N) { int ct = 0; for (int i = 1; i <= N; ++i) pre[i] = i; int cityA, cityB; while (M--) { cin >> cityA >> cityB; Join(cityA, cityB); } for (int i = 1; i <= N; ++i) if (pre[i] == i) ct++; cout << ct - 1 << endl; } return 0; }
HDOJ-1232 畅通工程【并查集裸题】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。