hdu 5441 (并查集)

題意:給你n個點,m條邊構成無向圖。q個詢問,每次一個值,求有多少條路,路中的邊權都小于這個值

a->b 和 b->a算兩種

思路:把權值從小到大排序,詢問從小到大排序,如果相連則用并查集相連形成聯通塊

x個點可以形成:x * (x - 1)

如果新增的路使兩個聯通塊和并則數量 增長了:

(num[1]+num[2])×(num[1]+num[2]-1) - num[1] × (num[1]-1) - num[2] ×(num[2]-1)


#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
typedef long long ll;
int T,n,m,k;
int num[20005],par[20005],p[20005];struct node
{int u,v,w;bool operator<(const node&a)const{return w < a.w;}
} pnode[100005];struct term
{int id,we;bool operator<(const term&a)const{return we<a.we;}
} te[20005];int fin(int x)
{return x == par[x]?  x : par[x] = fin(par[x]);
}void merg(int x,int y)
{int x1 = fin(x);int x2 = fin(y);if(x1 < x2){par[x2]= x1;num[x1] += num[x2];}else{par[x1] = x2;num[x2] += num[x1];}
}int main()
{scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&m,&k);for(int i = 0; i <= n; i++){par[i] = i;num[i] = 1;}for(int i = 0; i < m; i++)scanf("%d%d%d",&pnode[i].u,&pnode[i].v,&pnode[i].w);sort(pnode,pnode+m);for(int i = 0; i < k; i++){te[i].id = i;scanf("%d",&te[i].we);}sort(te,te+k);int tt = 0;ll ans = 0;for(int i = 0; i < k; i++){while(tt < m &&  pnode[tt].w <= te[i].we ){int u = fin(pnode[tt].u);int v = fin(pnode[tt].v);tt++;if(u == v)continue;ans += (num[u]+num[v])*(num[u]+num[v]-1)-num[u]*(num[u]-1) - num[v]*(num[v]-1);merg(u,v);}p[te[i].id] = ans;}for(int i = 0;i <k;i++)printf("%d\n",p[i]);}return 0;
}

  

轉載于:https://www.cnblogs.com/Przz/p/5409758.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Envi風暴】Envi 5.4遙感影像鑲嵌原來如此簡單!

圖像鑲嵌指是在一定的數學基礎控制下,把多景相鄰的遙感圖像拼接成一個大范圍、無縫圖像的過程。 Envi的圖像鑲嵌功能提供交互式的方式將沒有地理坐標或者地理坐標的多幅圖像合并,生成一幅單一的合成圖像。鑲嵌功能提供了透明處理、勻色、羽化等功能。 下面演示基于地理坐標(…

[python opencv 計算機視覺零基礎到實戰] 三、numpy與圖像編輯

一、學習目標 了解圖片的通道與數組結構了解使用numpy創建一個圖片了解使用numpy對圖片的一般操作方法 目錄 [python opencv 計算機視覺零基礎到實戰] 一、opencv的helloworld [【python opencv 計算機視覺零基礎到實戰】二、 opencv文件格式與攝像頭讀取] 一、opencv的hel…

java 常用類庫_JAVA(三)JAVA常用類庫/JAVA IO

成鵬致遠 |lcw.cnblog.com|2014-02-01JAVA常用類庫1.StringBufferStringBuffer是使用緩沖區的&#xff0c;本身也是操作字符串的&#xff0c;但是與String類不同&#xff0c;String類的內容一旦聲明之后則不可改變&#xff0c;改變的只是其內存地址的指向&#xff0c;而StringB…

Error: package or namespace load failed for ‘rJava’:

https://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudio-r-after-upgrading-to-osx-yosemite 安裝好的“xlsx”不能正常加載 library("xlsx") 報錯&#xff1a; 載入需要的程輯包&#xff1a;rJava Error: package or namespace load failed for…

Android之國際化部分文字生效而部分文字沒有生效的坑

1 問題 Android國際化我們知道只要在res目錄下面&#xff0c;創建不同國家的文件夾然后&#xff0c;把不同國家對于的語言以鍵值對的方式寫進strings.xml文件就行&#xff0c;這是一個非常簡單的操作&#xff0c;但是今天遇到了一個很奇葩的問題&#xff0c;在部分手機&#x…

【中間件】c#/.net使用GZY.Quartz.MUI搭建可視化的定時任務面板

GZY.Quartz.MUI是在github上開源的aspnetcore項目, 它旨在幫助開發人員通過面板來設置定時任務&#xff0c;主要想做的就是:像swaggerUI一樣,項目入侵量小,僅需要在Startup中注入的UI組件官方地址:https://www.cnblogs.com/GuZhenYin/p/15745002.html主要功能1.增加本地json持久…

Python學習筆記之字典

一、創建和使用字典 1、創建字典 phonebook{Alice:2341,Beth:9102,Cecil:3258} 2、dict,通過映射創建字典 >>> items[(name,Gumby),(age,34)] >>> ddict(items) >>> d 顯示&#xff1a;{name:Gumby,age:34} dict&#xff0c;通過關鍵字創建字典 >…

iOS UI基礎-7.0 UIScrollView

概述 移動設備的屏幕大小是極其有限的&#xff0c;因此直接展示在用戶眼前的內容也相當有限.當展示的內容較多&#xff0c;超出一個屏幕時&#xff0c;用戶可通過滾動手勢來查看屏幕以外的內容,普通的UIView不具備滾動功能&#xff0c;不能顯示過多的內容。UIScrollView是一個能…

【ArcGIS風暴】緩沖區分析、疊置分析綜合實驗案例:購房區域的選擇

實驗平臺:ArcGIS 9.3實驗目的:熟練掌握A rcGIS緩沖區分析和疊置分析操作,綜合利用各項空間分析工具解決實際問題。實驗要求:對每個條件進行緩沖區分析,運用空間疊置分析對多個圖層疊加,并分等級,確定合適的區域。實驗數據:ArcEx8實驗步驟打開ArcMap,加載數據ArcEx8,如…

[python opencv 計算機視覺零基礎到實戰] 四、了解色彩空間及其詳解

一、學習目標 了解什么是色彩空間了解opencv中色彩空間的轉換 目錄 [python opencv 計算機視覺零基礎到實戰] 一、opencv的helloworld [【python opencv 計算機視覺零基礎到實戰】二、 opencv文件格式與攝像頭讀取] 一、opencv的helloworld [[python opencv 計算機視覺零基…

java gui 按鍵 數組_java GUI分配數組值

好的,所以這是一個非常基本的例子.它需要更多的工作和優化,但應該讓你朝著正確的方向前進import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.Shape;im…

Android之如何實現阿拉伯版本(RTL)的recycleView的網格布局

1 問題 比如正常的recycleView的網格布局效果如下 1 2 34 5 67 8 現在需要變成這樣的效果 3 2 16 5 48 7 2 思考過程和嘗試解決方法 1)從recycleView上直接分析,看有沒有相關的方法變成這個格式,網上百度了,基本上找不到 2)既然recycleView里面有常見的幾種布局設置,…

poj1189 簡單dp

http://poj.org/problem?id1189 Description 有一個三角形木板,豎直立放。上面釘著n(n1)/2顆釘子&#xff0c;還有(n1)個格子&#xff08;當n5時如圖1&#xff09;。每顆釘子和周圍的釘子的距離都等于d&#xff0c;每一個格子的寬度也都等于d&#xff0c;且除了最左端和最右端…

WPF|如何在 WPF 中設計漂亮的社交媒體信息儀表板

1. 效果展示先來直接欣賞效果&#xff1a;2. 準備創建一個WPF工程&#xff0c;比如站長使用 .NET 7[1] 創建名為 Dashboard3 的WPF項目&#xff0c;添加一些圖片資源&#xff0c;項目目錄如下&#xff1a;2.1 圖片資源可在網站 iconfont[2] 下載 關閉、最小化 圖標&#xff0c;…

CentOS 設置服務開機啟動的方法

為什么80%的碼農都做不了架構師&#xff1f;>>> CentOS設置服務開機啟動的兩種方法 1、利用 chkconfig 來配置啟動級別 在CentOS或者RedHat其他系統下&#xff0c;如果是后面安裝的服務&#xff0c;如httpd、mysqld、postfix等&#xff0c;安裝后系統默認不會自動啟…

【ArcGIS風暴】水文分析模塊實驗:山脊線和山谷線提取

實驗平臺:ArcGIS 9.3實驗目的:學習和掌握山脊線和山谷線提取的原理及方法實驗要求:利用ArcGIS水文分析模塊提取樣區的山脊線和山谷線實驗數據:Ex1實驗步驟:1.正負地形的提取 (1)打開Arcmap,加載數據EX1,如圖 (2)平滑處理(均值濾波)。加載Spatial Analyst模塊,單擊…

[python opencv 計算機視覺零基礎到實戰] 五、對象追蹤

一、學習目標 了解為什么色彩空間的轉換那么重要了解opencv中進行對象跟蹤的方法 目錄 [python opencv 計算機視覺零基礎到實戰] 一、opencv的helloworld [【python opencv 計算機視覺零基礎到實戰】二、 opencv文件格式與攝像頭讀取] 一、opencv的helloworld [[python op…

Android之用glide加載gif圖片靜態展示

1 問題 圖片是gif動圖&#xff0c;我們需要獲取第一幀的靜態圖片并且展示。 2 解決辦法 public void changeGifToPicture(NonNull Context context, NonNull String url, NonNull ImageView imageView) {Glide.with(context).asBitmap().load(url).into(new BitmapImageViewTa…

flex java框架_fleXive——JavaEE框架

fleXive——JavaEE框架fleXive是一個開源的JavaEE框架&#xff0c;基于LGPL許可證&#xff0c;最新版本3.0RC1&#xff0c;它基于EJB3&#xff0c;并帶有補充的JSF組件庫&#xff0c;具有靈活性和可擴展性。它主要致力于企業級(Enterprise-scale)內容建模、存儲和檢索&#xff…

【ArcGIS風暴】在ArcGIS中實現將一個圓16等分

本文實現在ArcGIS中畫一個圓,然后將其16等分。 步驟一:生成圓(多邊形圖層) (1)創建一個點圖層(圖名Center),如果需要精確定位該點,建議通過輸入坐標點的方式來創建,這一步比較簡單,不再詳述; (2)利用Buffer命令創建緩沖區(圖名Circle_2km),因為要處理的對象…