URAL 1160 Network(最小生成树)
Network
Memory limit: 64 MB
Input
Output
Sample
| input | output |
|---|---|
4 6 |
1 |
题意:
给定几个需要链接的点以及能够利用的边,要求用这些变将所有的点都链接起来,且所用边长的最大值尽量小。
思路:
起初,看题意是最小生成树,但题目所给的样例,并不是最小生成树的结果,纠结半天,然后又看了几遍题目,还是不知所云,最后试着把模版敲上去,submit~~
然后便ac了,
后来问了才知道,这道题确实最小生成树,不过只要所用边的最大值不变,那些权值小的边可以任意加上去,因为题目只是对最大边最小有要求,对边的数量没有要求。
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <iostream>
#include <stack>
#include <queue>
#include <algorithm>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
typedef long long ll;
using namespace std;
const int N = ;
const int M = ;
int n,m,k,s,t,tot,sum=,maxn=;
int head[N],vis[N],dis[N],father[N];
int dfn[N],low[N],stack1[N],num[N],in[N],out[N];
struct man{
int u,v,val,used;
}edg[M];
bool cmp(man f,man g){
return f.val<g.val;
}
int find(int x){
if(father[x]!=x)father[x]=find(father[x]);
return father[x];
}
void Union(int x,int y){
x=find(x);y=find(y);
if(x!=y)father[y]=x;
return;
}
void kruskal(){
for(int i=;i<=m;i++){
int u=edg[i].u,v=edg[i].v;
if(find(u)==find(v))continue;
Union(u,v);
sum++;edg[i].used=;
maxn=edg[i].val;
if(sum==n-)return;
}
}
int main() {
int u,v,val;tot=;met(dfn,);met(vis,);met(head,-);
for(int i=;i<N;i++)father[i]=i;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&val);
edg[i].u=u;edg[i].v=v;edg[i].val=val;edg[i].used=;
}
sort(edg+,edg+m+,cmp);
kruskal();
printf("%d\n%d\n",maxn,sum);
for(int i=;i<=m;i++){
if(edg[i].used){
printf("%d %d\n",edg[i].u,edg[i].v);
}
}
return ;
}
URAL 1160 Network(最小生成树)的更多相关文章
- 1160. Network(最小生成树)
1160 算是模版了 没什么限制 结束输出就行了 #include <iostream> #include<cstdio> #include<cstring> #i ...
- [poj2349]Arctic Network(最小生成树+贪心)
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17758 Accepted: 5646 D ...
- BZOJ 3732: Network 最小生成树 倍增
3732: Network 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3732 Description 给你N个点的无向图 (1 &l ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- ZOJ1586——QS Network(最小生成树)
QS Network DescriptionIn the planet w-503 of galaxy cgb, there is a kind of intelligent creature nam ...
- TZOJ 2415 Arctic Network(最小生成树第k小边)
描述 The Department of National Defence (DND) wishes to connect several northern outposts by a wireles ...
- ZOJ1586:QS Network (最小生成树)
QS Network 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 Description: In th ...
- poj2349 Arctic Network - 最小生成树
2017-08-04 16:19:13 writer:pprp 题意如下: Description The Department of National Defence (DND) wishes to ...
- POJ-1861,Network,最小生成树水题,,注意题面输出有问题,不必理会~~
Network Time Limit: 1000MS Memory Limit: 30000K Special Judge http://poj.org/problem?id=1 ...
随机推荐
- C语言基础--switch
switch格式: switch (条件表达式) { case 整数: // case可以有一个或多个 语句; break; case 整数: 语句; break; default: 语句; brea ...
- awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上
今天尝试写一个小demo实现下之前看过的代码,目的了解不同文件的数据访问,掌握如何获取前台数据,如何将数据库的数据在前端页面展示. awt可视化界面可已实现提交数据到数据库,也可查询数据在控制台打印. ...
- Quartz之主方法运行
import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; impo ...
- 在ubunut下使用pycharm和eclipse进行python远程调试
我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...
- 统计一段文字中出现频率最高的10个单词(c语言)
注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...
- dom对象操作Html,Css
HTML: 1.不要再文档加载完使用document.write,这样会创建新的dom对象,原来的元素将被覆盖. 2.获取元素,通过getElementbyID; getElementbyTag(&q ...
- PHP ceil() 函数
定义和用法 ceil() 函数向上舍入为最接近的整数. 语法 ceil(x) 参数 描述 x 必需.一个数. 说明 返回不小于 x 的下一个整数,x 如果有小数部分则进一位.ceil() 返回的类型仍 ...
- poj1179
//Accepted 244 KB 0 ms //区间dp //石子合并模型 #include <cstdio> #include <cstring> #include < ...
- ORA-01084: OCI 调用中的参数无效
clob,nclob当值为“”空字符串时,就会出现这个错误 OracleParameter op = new OracleParameter("CONTENTclog", Orac ...
- swift简介
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...