HDU5441 Travel 并查集
来源:互联网 发布:惠普hp m1136的端口 编辑:程序博客网 时间:2024/06/05 06:10
http://acm.hdu.edu.cn/showproblem.php?pid=5441
无向图,n个点,m条带权边,q次询问,给出数值d,点a可以到点b当且仅当存在一条路线其中最大的权值不超过d。
用sum记录连通块节点个数,两个连通块合并,结果增加( sum[a] + sum[b] ) * ( sum[a] + sum[b] - 1 ) - sum[a] * ( sum[a] - 1 ) - sum[b] * ( sum[b] -1 )
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=1e5+5;struct node{ int a; int b; int c;};int father[N];node p[N];int num[N];ll sum[N];//表示该点所在连通块的节点个数int r[N];ll ans[N];int finds(int x){ if(father[x]!=x) father[x]=finds(father[x]); return father[x];}bool cmp(node x,node y){ return x.c<y.c;}void connect(int a,int b){ if(r[a]>r[b]) father[b]=a; else if(r[a]<r[b]) father[a]=b; else { father[a]=b; r[b]++; } sum[a]=sum[b]=sum[a]+sum[b];}int main(){ int T,cas=1; scanf("%d",&T); while(T--) { int n,m,q; scanf("%d%d%d",&n,&m,&q); for(int i=1;i<=m;i++) { sum[i]=1; father[i]=i; scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c); } sort(p+1,p+m+1,cmp);//首先按权值进行排序 for(int i=1;i<=m;i++) { int a=finds(p[i].a); int b=finds(p[i].b); if(a!=b) { ans[i]=ans[i-1]+(sum[a]+sum[b])*(sum[a]+sum[b]-1)-sum[a]*(sum[a]-1)-sum[b]*(sum[b]-1);//连通块合并结果增加 connect(a,b); } else ans[i]=ans[i-1]; num[i]=p[i].c; } while(q--) { int x; scanf("%d",&x); int t=upper_bound(num+1,num+m+1,x)-num-1; printf("%lld\n",ans[t]); } } return 0;}
0 0
- HDU5441 Travel 并查集
- HDU5441 Travel 并查集
- 离线+并查集 hdu5441 Travel
- HDU5441 Travel 有秩并查集
- HDU5441 Travel (2015年长春网络赛,并查集)
- HDU5441(2015长春网赛)——Travel(并查集应用,离线处理)
- hdu5441 离线处理+并查集
- Travel 并查集
- 并查集 Travel
- HDU5441 Travel
- hdu5441 Travel
- HDU5441 并查集+(按大小)预处理
- hdu5441 并查集(两种方法)
- HDU 5441 Travel 并查集
- hdu 5441 Travel(离线+并查集)
- hdu 5441 Travel(并查集应用)
- HDU 5441 Travel (并查集)
- HDU 5441 Travel(并查集)
- java线程池
- javaScript基本数据类型
- CodeForces 688C-NP-Hard Problem(dfs)
- 18. 使用模板【从零开始学Spring Boot】
- 6Reader--FileReader2
- HDU5441 Travel 并查集
- Mesos源码分析(5): Mesos Master的启动之四
- standupTimer项目中的布局容器
- jqgrid使用分析
- 7字符流的文件复制
- javaweb—ServletContext和ServletConfig
- A Model Rendering Demo
- 8字符缓冲流BufferedWriter
- HTML5中SVG几个动画