hdu 3938 Portal
来源:互联网 发布:进出口银行 待遇 知乎 编辑:程序博客网 时间:2024/06/16 07:31
离线的并查集
水啊水,昨天太2了
不过题意也够2的,这翻译啊
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct EDGE{ int u, v, val;}edge[50000 + 1234];struct QUE{ int id, val;}l[10000 + 123];int n, m, q;int p[10000 + 123];int num[10000 + 123];int cou[10000 + 123];bool cmp(EDGE x, EDGE y){ return x.val < y.val;}bool cmp2(QUE x, QUE y){ return x.val < y.val;}void init(){ for(int i = 1; i <= n; i++) { p[i] = i; num[i] = 1; }}int find(int k){ if(k != p[k]) p[k] = find(p[k]); return p[k];}int Union(int a, int b){ a = find(a); b = find(b); if(a == b) return 0; int t = num[a] * num[b]; p[b] = a; num[a] += num[b]; num[b] = 0; return t;}int main(){ while(scanf("%d%d%d", &n, &m, &q) != EOF) { for(int i = 0; i < m; i++) scanf("%d%d%d",&edge[i].u, &edge[i].v, &edge[i].val); sort(edge, edge + m, cmp); for(int i = 0; i < q; i++) { scanf("%d", &l[i].val); l[i].id = i; } sort(l, l + q, cmp2); init(); int begin = 0; int ans = 0; for(int i = 0; i < q; i++) { while(edge[begin].val <= l[i].val && begin < m) { ans += Union(edge[begin].u, edge[begin].v); begin++; } cou[l[i].id] = ans; } for(int i = 0; i < q; i++) printf("%d\n", cou[i]); } return 0;}
- hdu 3938 Portal
- hdu 3938 Portal
- hdu 3938 Portal
- HDU 3938 Portal
- hdu 3938 Portal
- hdu 3938 Portal
- hdu 3938 Portal
- HDU 3938 Portal
- HDU-3938-Portal
- HDU 3938 Portal
- HDU 3938 Portal 并查集
- hdu 3938 Portal(离线并查集)
- 【HDU】3938 Portal 并查集
- hdu-3938 Portal 离线最小生成树
- hdu 3938 Portal 离线+并查集
- hdu-3938-Portal-并查集
- HDU 3938 Portal(离线+Kruskal+并查集)
- hdu 3938 Portal(离线并查集)
- 读《设计模式》一
- ewf
- jstl表达式
- java A(A a)构造函数--原型构造函数
- (转)as3 MVC模式
- hdu 3938 Portal
- 数据库完整性
- Uva 539 The Settlers of Catan
- poj2421
- java中CharSequence接口
- 最小圆覆盖
- Uva 514 Rails
- jsp页面传值的乱码问题总结
- js实现页面跳转的几种方式