HDU 5441 Travel
来源:互联网 发布:手机电影软件哪个最好 编辑:程序博客网 时间:2024/06/08 10:55
HDU 5441 Travel
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<vector>#include<cmath>#define maxn 100005#define INF 0x3fffffff#define ll __int64#define mod 10000007#define N 20005#define M 100005using namespace std;int s[N];int que[M];struct node{ int a,b; int val;}p[M];ll ans[M];int Find(int num){ if(s[num]<0) return num; return s[num]=Find(s[num]);}bool cmp(node a,node b){ return a.val<b.val;}int main(){ int T; scanf("%d",&T); int n,m,q; while(T--){ memset(s,-1,sizeof(s)); scanf("%d%d%d",&n,&m,&q); for(int i=0;i<m;i++) scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].val); sort(p,p+m,cmp); int E=0; for(int i=0;i<q;i++){ scanf("%d",&que[i]); E=max(E,que[i]); } /*** Init */ ll sum=0,A=0; for(int i=0;i<=E&&A<m;i++){ while(p[A].val<=i&&A<m){ int xx=Find(p[A].a); int yy=Find(p[A].b); if(xx!=yy){ ll nu1=-s[xx]; ll nu2=-s[yy]; s[xx]+=s[yy]; s[yy]=xx; sum-=nu1*(nu1-1); sum-=nu2*(nu2-1); sum+=(nu1+nu2)*(nu1+nu2-1); } A++; } ans[i]=sum; } for(int i=0;i<q;i++) printf("%I64d\n",ans[que[i]]); } return 0;}
0 0
- HDU-5441 Travel
- hdu 5441 Travel
- HDU 5441 Travel
- HDU 5441Travel
- 【HDU 5441】Travel
- hdu(5441)——Travel
- hdu Travel
- hdu-travel
- Travel HDU
- Travel HDU
- Travel HDU
- HDU 5441 Travel 并查集
- hdu 5441 Travel(离线+并查集)
- hdu 5441 Travel(生成树)
- hdu 5441 Travel(并查集应用)
- HDU 5441 Travel (并查集)
- HDU 5441 Travel(并查集)
- hdu 5441 Travel 排序 并查集
- 自定义控件其实很简单2/3
- Easyui-Datagrid—表头灵活拖动
- ORA-00600: internal error code, arguments: [kdourp_inorder2]
- SCC9 Remote Client Copy
- oracle客户端的安装
- HDU 5441 Travel
- Web项目从Tomcat迁移到weblogic 10.3出现的错误
- hadoop 数据倾斜
- 自定义控件其实很简单3/4
- 大数运算(三)——大数相除求余数和商
- hdu5438 -ponds -水题
- jvm 调优
- C++11
- Android Activity启动慢