Croc Champ 2013 - Round 1 D. Connected Components 并查集

链接:

http://codeforces.com/contest/292/problem/D

题意:

给你一个图,n个点,m条边

每次询问l,r   问如果删除第l条边到第r条边之间的所有边,有多少联通分量

题解:

前缀并查集和后缀并查集就可以了 

代码:

31 int n, m, k;
32 int x[MAXN], y[MAXN];
33 int P[MAXN][510];
34 int rP[MAXN][510];
35 int PP[510];
36 int vis[510];
37 
38 int find(int *par,int x) {
39     return par[x] = par[x] == x ? x : find(par, par[x]);
40 }
41 
42 void unite(int *par, int x, int y) {
43     int a = find(par, x), b = find(par, y);
44     if (a != b) par[a] = b;
45 }
46 
47 int main() {
48     ios::sync_with_stdio(false), cin.tie(0);
49     cin >> n >> m;
50     rep(i, 1, m + 1) cin >> x[i] >> y[i];
51     rep(i, 1, n + 1) P[0][i] = i;
52     rep(i, 1, m + 1) {
53         rep(j, 1, n + 1) P[i][j] = P[i - 1][j];
54         unite(P[i], x[i], y[i]);
55     }
56     rep(i, 1, n + 1) rP[m + 1][i] = i;
57     per(i, 1, m + 1) {
58         rep(j, 1, n + 1) rP[i][j] = rP[i + 1][j];
59         unite(rP[i], x[i], y[i]);
60     }
61     cin >> k;
62     while (k--) {
63         int l, r;
64         cin >> l >> r;
65         rep(i, 1, n + 1) PP[i] = P[l - 1][i];
66         rep(i, 1, n + 1) unite(PP, i, find(rP[r + 1], i));
67         memset(vis, 0, sizeof(vis));
68         int ans = 0;
69         rep(i, 1, n + 1) if (!vis[find(PP, i)]) {
70             ans++;
71             vis[find(PP, i)] = 1;
72         }
73         cout << ans << endl;
74     }
75     return 0;
76 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值