hdu 3938 Portal离线并查集
2015-01-26 13:59
399 查看
题意搞得迷迷糊糊的
参考:http://blog.csdn.net/sdj222555/article/details/7439187
代码搬运工
参考:http://blog.csdn.net/sdj222555/article/details/7439187
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<iomanip> #define INF 99999999 #define MAXN 10005 using namespace std; int fa[MAXN], num[MAXN]; long long out[MAXN]; int n, m, q; //适用于正负整数 template <class T> inline bool scan_d(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0; //EOF while (c != '-' && (c<'0' || c>'9')) c = getchar(); sgn = (c == '-') ? -1 : 1; ret = (c == '-') ? 0 : (c - '0'); while (c = getchar(), c >= '0'&&c <= '9') ret = ret * 10 + (c - '0'); ret *= sgn; return 1; } struct node { int u, v, w; bool operator < (const node& a) const { return w < a.w; } }edge[MAXN*10]; struct wen { int l, id; bool operator <(const wen &a) const { return l < a.l; } }p[MAXN]; void init() { for (int i = 1; i <= n; ++i) { fa[i] = i; num[i] = 1; } } int find(int x) { if (fa[x] == x) return x; int t = find(fa[x]); fa[x] = t; return t; } int join(int x, int y) { int fx = find(x); int fy = find(y); if (fx == fy) return 0; int t = num[fx] * num[fy]; num[fx] += num[fy]; num[fy] = 0; fa[fy] = fx; return t; } int main() { while (cin >> n >> m >> q) { init(); for (int i = 1; i <= m; ++i){ //cin >> edge[i].u >> edge[i].v >> edge[i].w; scan_d(edge[i].u); scan_d(edge[i].v); scan_d(edge[i].w); } sort(edge + 1, edge + m + 1); for (int i = 1; i <= q; ++i) { //cin >> p[i].l; scan_d(p[i].l); p[i].id = i; } sort(p+1,p+q+1); int pos = 1; long long ans = 0; for (int i = 1; i <= q; ++i) { while (pos <= m && edge[pos].w <= p[i].l) { ans += join(edge[pos].u,edge[pos].v); pos++; } out[p[i].id] = ans; } for (int i = 1; i <= q; ++i) { cout << out[i] << endl; } } return 0; }
代码搬运工
相关文章推荐
- HDU-3938 Portal 克鲁斯卡尔思想 (离线并查集)
- hdu 3938 Portal(离线并查集)
- 多校第十场 HDU 3938 Portal(离线的并查集)
- hdu 3938 Portal(离线并查集)
- hdu 3938 Portal 计算两点路上最大距离中的最小值<=L的路径个数 离线并查集
- 3938 HDU Portal(离线型并查集)
- HDU-3938 Portal (并查集+离线输出)
- hdu 3938(离线的并查集)
- hdu-3938-Portal-并查集
- hdu 3938(离线的并查集)
- hdu 3938(离线并查集)
- hdu-3938 Portal 离线最小生成树
- HDU 4750 && HDU 3938 离线并查集
- hdu 3938(离线的并查集)
- HDU 3938 离线并查集
- HDOJ 3938 Portal (离线并查集)
- 【HDU】3938 Portal 并查集
- 离线+带权并查集 hdoj3938 Portal
- HDU - 5441 Travel 离线处理+并查集
- hdu 3938 Portal