HDU 1863:畅通project(带权值的并查集)
畅通project
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16075 Accepted Submission(s): 6677
行相应村庄间道路的成本,每行给出一对正整数,各自是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,所有输入结束,相应的结果不要输出。
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
3
?
这是一道带权值的并查集,由于是中文题, 题意也就不用多说了。。
所以我是用结构体写的。。。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<sstream>
#include<cmath> using namespace std; #define f1(i, n) for(int i=0; i<n; i++)
#define f2(i, n) for(int i=1; i<=n; i++)
#define f3(i, n) for(int i=n; i>=1; i--)
#define f4(i, n) for(int i=1; i<n; i++)
#define M 10050 int f[M];
int r[M];
int ans;
int t;
int n, m;
int coun; struct node
{
int x;
int y;
int cost; //花费
}q[M]; int cmp(node x1, node y1)
{
return x1.cost < y1.cost;
} int find(int x) //并查集的find
{
return f[x] == x ? x:f[x] = find( f[x] );
} void Kruskal()
{
sort(q, q+n, cmp);
f2(i, n)
{
int xx = find(q[i].x);
int yy = find(q[i].y);
if( xx!=yy ) //当不是统一集合时。。
{
ans+=q[i].cost;
f[yy] = xx;
coun --; //连起来一条路
}
}
} int main()
{
while(scanf("%d%d", &n, &m) &&n)
{
ans = 0;
t = 0;
coun = m;
f2(i, m) f[i] = i; //初始化
f2(i, n)
scanf("%d%d%d", &q[i].x, &q[i].y, &q[i].cost);
Kruskal();
if(coun==1)
printf("%d\n", ans);
else
printf("?\n");
} return 0;
}
HDU 1863:畅通project(带权值的并查集)的更多相关文章
- 洛谷 P2024 [NOI2001]食物链——带权值的并查集维护
先上一波题目 https://www.luogu.org/problem/P2024 通过这道题复习了一波并查集,学习了一波带权值操作 首先我们观察到 所有的环都是以A->B->C-> ...
- HDU 1863 畅通project (最小生成树是否存在)
题意 中文 入门最小生成树 prim大法好 #include<cstdio> #include<cstring> using namespace std; const int ...
- hdu 1863 畅通project kruskal || prim
简单最小生成树,畅通project.这三道题目都是练习最小生成树的. 注意一下推断是否有通路时,kruskal能够推断每一个点的祖先是否同样.prim能够推断每一个点是否都加进集合里面了,也就是说是否 ...
- HDU1863_畅通project【Prim】【并查集】
畅通project Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1863 畅通project
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm& ...
- hdu 1829 A Bug's Life(分组并查集(偏移量))
A Bug's Life Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 51nod1459(带权值的dijkstra)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 题意:中文题诶- 思路:带权值的最短路,这道题数据也没 ...
- 带权值的LCA
例题:http://poj.org/problem?id=1986 POJ1986 Distance Queries Language: Default Distance Queries Time L ...
- HDU 3081 Marriage Match II (二分图,并查集)
HDU 3081 Marriage Match II (二分图,并查集) Description Presumably, you all have known the question of stab ...
随机推荐
- 【Linux】linux经常使用基本命令
Linux中很多经常使用命令是必须掌握的,这里将我学linux入门时学的一些经常使用的基本命令分享给大家一下,希望能够帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显 ...
- C++11下的线程池以及灵活的functional + bind + lamda
利用boost的thread实现一个线程类,维护一个任务队列,以便可以承载非常灵活的调用.这个线程类可以方便的为后面的线程池打好基础.线程池还是动态均衡,没有什么别的.由于minGW 4.7 对 C+ ...
- Android的TextView使用Html来处理图片显示、字体样式、超链接等
一.[Android实例]实现TextView里的文字有不同颜色 转eoe:http://www.eoeandroid.com/thread-4496-1-1.html import android. ...
- Android--------- SD卡存储文件报错解决
##文件找不到 1.没有写write权限 2.没有判断文件夹是否存在,不存在则创建
- Android与JS混编(js调用android相机)
参考android相机调用,http://blog.csdn.net/yanzi1225627/article/details/33028041/,谢谢 相机怎么调用就不做赘述了,下面是js调用 ...
- 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)
1.网络通信原理,在一个IP网络范围内最大的IP地址是被保留作为广播地址来使用的.某个网络的IP 范围是192.168.0.XXX, 子网掩码是255.255.255.0,则该网络的广播地址是192. ...
- 学习unity的第一个小游戏(Roll the ball)的笔记
1.摄像机的跟随运动,逻辑就是保持摄像机跟主角的距离不变(Undate()函数). offset=trandform.position-player.position. Undate() { tran ...
- css 文本域textarea显示成label标签
<html> <head> <title>textarea显示为label</title> <style type="text/ ...
- C# 扩展方法克隆实体类
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Ru ...
- OpenGL ES 2.0 光照
基本的光照 光照分成了3种组成元素(3个通道):环境光.散射光以及镜面光. 材质的反射系数实际指的就是物体被照射处的颜色,散射光强度指的是散射光中的RGB(红.绿.蓝)3个色彩通道的强度. 环境光 指 ...