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 ...
随机推荐
- HDU 5313 bitset优化背包
题目大意: 添加尽可能少的边,最后使图形成二分图 一开始将图区分成一个个联通分量,根据二分图染色,计算出每个联通分量的黑色点和白色点的个数 希望添加的边最少,那么合并的时候,希望黑白块尽可能平均,这无 ...
- Cisco IOS Software Activation Command Reference
clear license agent : to clear license agent statistics counters or connection statistics (in privil ...
- JS图片加载失败显示默认图片
代码如下: <div id='photo<%# Container.DataItemIndex+1%>' style="position: absolute; displa ...
- stm32定义GPIO口方向和操作的代码
#include "stm32f10x.h" #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+(( ...
- DetectEncoding
private Encoding DetectEncoding(ref Stream stream) { if (_pageEncoding != null) { return _pageEncodi ...
- linux学习笔记2:linux 下java开发的软件安装
一.java ee开发环境的搭建 1.jdk的安装步骤 (1)首先必须要有安装文件,具体的可以去相关网站上下载,并制作iso文件 (2)将制作的iso文件挂载到linux系统上,并在虚拟机上将iso文 ...
- HibernateDaoSupport 源码
package org.springframework.orm.hibernate3.support; import org.hibernate.HibernateException; import ...
- SVG 2D入门1 - SVG综述
位图与矢量图 以前,浏览器中显示的图形,例如jpeg.gif等,都是位图,这些图像格式是基于光栅的.在光栅图像中,图像文件定义了图像中每个像素的颜色值.浏览器需要读取这些值并做出相应行动.这种图像的再 ...
- Node.js +Express+MongoDB+mogoose+ejs+bootstrap+jquery
Node.js + MongoDB 项目实战(二) 创建项目 在项目实战(一)中,已经配置好了开发环境(详见:http://www.cnblogs.com/jameslong/articles/34 ...
- gen already exists but is not a source folder ZT
解决方法:1. 右键点击工程,选择 "Properties"2. 选择左边的 "Java Build Path" 3. 打开 "Source" ...