hdu5441&15年长春网赛1005
2015-09-14 18:30
369 查看
题目大意:有一n个点,m条边的带边权的图,然后给出q个问题,每个问题会给一个边权的量,在图中,超出这个边权,就算不连通,问在判断不连通之后,图中还有多少对连通的点?
解题思路:并查集,此时每个结点的秩为它的子节点的数目~~
注意点:
1.让边以边权从小到大排序,然问题按照提供的边权的排序。(这两个优化很重要,不用每次都去重新扫)
2.两个连通块合并之后,其大小是2*rank_num[u]*rank_num[v];
代码转自http://blog.csdn.net/qq_24451605/article/details/48415749
我的代码弄丢了
解题思路:并查集,此时每个结点的秩为它的子节点的数目~~
注意点:
1.让边以边权从小到大排序,然问题按照提供的边权的排序。(这两个优化很重要,不用每次都去重新扫)
2.两个连通块合并之后,其大小是2*rank_num[u]*rank_num[v];
代码转自http://blog.csdn.net/qq_24451605/article/details/48415749
我的代码弄丢了
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define MAX 20007 using namespace std; int fa[MAX],num[MAX],t,n,m,q,pp[MAX]; struct Query { int x,id; bool operator < ( const Query& a )const { return x < a.x; } }a[MAX]; struct Edge { int u,v,w; bool operator < ( const Edge& a ) const { return w < a.w; } }e[MAX*5]; void init ( ) { for ( int i = 1 ; i <= n ; i++ ) { num[i] = 1; fa[i] = i; } } int _find ( int x ) { return fa[x] == x? x : fa[x] = _find ( fa[x] ); } void _union ( int x , int y ) { x = _find ( x ); y = _find ( y ); if ( y < x ) swap ( x , y ); fa[y] = x; num[x] += num[y]; } int main ( ) { scanf ( "%d" ,&t ); while ( t-- ) { int ans = 0; scanf ( "%d%d%d" , &n , &m , &q ); init ( ); for ( int i = 0 ; i < m ; i++ ) scanf ( "%d%d%d" , &e[i].u , &e[i].v , &e[i].w ); sort ( e , e+m ); int j = 0; for ( int i = 0 ; i < q ; i++ ) { a[i].id = i; scanf ( "%d" , &a[i].x ); } sort ( a , a+q ); for ( int i = 0 ; i < q ; i++ ) { while ( j < m && e[j].w <= a[i].x ) { int u = _find ( e[j].u ); int v = _find ( e[j].v ); j++; if ( u == v ) continue; ans += (num[u]+num[v])*(num[u]+num[v]-1)-num[u]*(num[u]-1) - num[v]*(num[v]-1); _union ( u , v ); } pp[a[i].id] = ans; } for ( int i = 0 ; i < q ; i++ ) printf ( "%d\n" , pp[i] ); } }
相关文章推荐
- 华为OJ平台题:字符串加解密
- redis cluster
- sql server 查询正在运行的脚本
- 妥布霉素
- uva 11624 Fire
- C# WinForm向服务器发送文件
- FPGA工具篇——编辑器Notepad++
- C#_观察者模式
- 这个布局改怎么写?
- 印象航院
- VS2010 :找不到System.Web.Extensions.dll引用
- VS2010 :找不到System.Web.Extensions.dll引用
- wpf解决方案
- oauth2
- 支持win8 x32和x64的抓包软件Microsoft Network Monitor
- Mvc4_MvcPager 概述
- Mvc4_Area的应用
- hdu 5443 water problem (RMQ)
- XML读取、XML修改、XML删除
- 禁止ScrollView在子控件的布局改变时自动滚动的的方法