HDU 3938 Portal
来源:互联网 发布:慕容安cos淘宝 编辑:程序博客网 时间:2024/06/06 18:43
离线并查集~~~
#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#include <iostream>#include <algorithm>#include <functional>#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f3f3f3f3fLLusing namespace std;const int MAXN = 10010;const int MAXM = 50010;const int MAXQ = 10010;struct Query{ int l, id; Query() {} Query(int t_l, int t_id) : l(t_l), id(t_id) {} bool operator < (const Query &q) const { return l < q.l; }}query[MAXQ];struct Edge{ int u, v, w; Edge() {} Edge(int t_u, int t_v, int t_w) : u(t_u), v(t_v), w(t_w) {} bool operator < (const Edge &e) const { return w < e.w; }}edge[MAXM];int ans[MAXN], parent[MAXN];int n, m, q;void init_set(){ memset(parent, -1, sizeof(parent));}int find_set(int u){ return parent[u] < 0 ? u : parent[u] = find_set(parent[u]);}void union_set(int u, int v){ int r1 = find_set(u), r2 = find_set(v); if(r1 != r2) { if(parent[r2] < parent[r1]) { parent[r2] += parent[r1]; parent[r1] = r2; } else { parent[r1] += parent[r2]; parent[r2] = r1; } } return ;}int main(){ //freopen("aa.in", "r", stdin); //freopen("bb.out", "w", stdout); while(scanf("%d %d %d", &n, &m, &q) != EOF) { for(int i = 1; i <= m; ++i) { scanf("%d %d %d", &edge[i].u, &edge[i].v, &edge[i].w); } for(int i = 1; i <= q; ++i) { query[i].id = i; scanf("%d", &query[i].l); } sort(edge + 1, edge + m + 1); sort(query + 1, query + q + 1); memset(ans, 0, sizeof(ans)); int j = 1; init_set(); for(int i = 1; i <= q; ++i) { ans[query[i].id] = ans[query[i-1].id]; while(edge[j].w <= query[i].l && j <= m) { int r1 = find_set(edge[j].u), r2 = find_set(edge[j].v); if(r1 != r2) { ans[query[i].id] += parent[r1] * parent[r2]; union_set(edge[j].u, edge[j].v); } ++j; } } for(int i = 1; i <= q; ++i) { printf("%d\n", ans[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(离线并查集)
- Java编程扑克游戏
- Remove Duplicates from Sorted Array
- Android 编译Android内核源码
- CAS 登录成功后返回的值实现根据不同的条件查询不同的表或者数据库
- sql 关键字及作用
- HDU 3938 Portal
- Emacs 之 ediff 学习
- centos 端口开放及关闭
- 小问题见大问题
- js frameset demo
- Linux如何统计进程的CPU利用率
- HandlerThread,Handler,Thread使用方法
- x-webkit-speech -- 实现语音输入
- 几个特殊的IP地址