多校第十场 HDU 3938 Portal(离线的并查集)
来源:互联网 发布:excel成绩分析软件 编辑:程序博客网 时间:2024/04/30 12:03
题意:定义T是2点间某条路径上的最大边权,要找出某两点间所有路径上的T的最小值,给定一个L问,满足小于等于L的min{T}的个数
题出的挺坑爹的,读半天没读懂啥意思。
达哥说是离线的并查集,大概就是用并查集来维护图,根据边权从小到大不断往图中加边,新加的边一定满足是2点间的某路径的最大值,若2点本身不在同一连通分量上,则这条边就是所求的minT,满足它的个数就是2个连通分量的定点个数的乘积。
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxq=10100;const int maxn=10100;const int maxm=50500;int p[maxn],rank[maxn],cnt[maxn];//for merge-find setsint index[maxq] , que[maxq] , ans[maxq];//for queryint ind[maxm] ;//for edgestruct Edge{ int u,v,w;}edge[maxm];int find (int x){ return p[x]==x?x:p[x]=find(p[x]);}int merge (int a,int b){ int fa=find (a); int fb=find (b); if(fa==fb)return 0; int t=cnt[fa]*cnt[fb]; if(rank[fa]>rank[fb])p[fb]=fa,cnt[fa]+=cnt[fb],cnt[fb]=0; else p[fa]=fb,cnt[fb]+=cnt[fa],cnt[fa]=0; if(rank[fa]==rank[fb])rank[fb]++; return t;}bool cmp1 (int a,int b){ return edge[a].w<edge[b].w;}bool cmp2 (int a, int b){ return que[a]<que[b];}int main (){ int n,m,q; int u,v,w; freopen ("in.in","r",stdin); freopen ("out.txt","w",stdout); while (~scanf("%d%d%d", &n,&m,&q)) { for (int i=0 ; i<m ; ++i) { scanf("%d%d%d",&u,&v,&w); u--,v--; edge[i].u=u;edge[i].v=v;edge[i].w=w; ind[i]=i; } for (int i=0 ; i<q ; ++i) { scanf("%d",que+i); index[i]=i; } for (int i=0 ; i<n ; ++i) rank[i]=0,p[i]=i,cnt[i]=1; //memset (ans , 0 ,sizeof(ans)); int tmp=0; sort (ind , ind+m , cmp1); sort (index , index+q , cmp2); for (int i=0 ,j=0; i<q ; ++i) { while (edge[ind[j]].w<=que[index[i]] && j<m) { tmp+=merge(edge[ind[j]].u,edge[ind[j]].v); ++j; } ans[index[i]]=tmp; } for (int i=0 ; i<q ; ++i) printf("%d\n",ans[i]); } return 0;}
- 多校第十场 HDU 3938 Portal(离线的并查集)
- hdu 3938 Portal(离线并查集)
- hdu 3938 Portal 离线+并查集
- HDU 3938 Portal(离线+Kruskal+并查集)
- hdu 3938 Portal(离线并查集)
- 3938 HDU Portal(离线型并查集)
- HDU-3938 Portal (并查集+离线输出)
- Hdu 3938 Portal((离线+并查集) (★)
- HDU-3938 Portal(离线并查集)
- hdu 3938 Portal ( 离线并查集)
- 3938 Portal(离线型的并查集)
- Hdu 3938 Portal【离线+并查集+思维】
- HDOJ 3938 Portal (离线并查集)
- HDU-3938 Portal 克鲁斯卡尔思想 (离线并查集)
- HDOJ 题目3938 Portal(带权值并查集+离线)
- 离线+并查集 Portal
- hdu Portal 离线+并查集★★
- hdu 3938(离线的并查集)
- 将Asp.net mvc整合进现有Asp.net webform项目
- 睡眠分析项目中遇到的问题以及经验总结
- The pogo stick of NSRunLoop
- 常量指针 和 指针常量
- 一个简单的linux下c语言的计时程序(供新手参考)
- 多校第十场 HDU 3938 Portal(离线的并查集)
- 不同类型的变量在内存中存储的详细情况
- 子类实例化时的超类的构造方法问题
- C# ,webBrowser,登录,数据填充,模拟点击链接,运行JS函数
- Software Design Specification Templates
- 分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件
- UNIX网络编程的回射服务器的改进步骤
- javaIO实例
- 关于VB 6.0 调用WebService