POj 1797 Heavy Transportation
时间:2022-05-08
本文章向大家介绍POj 1797 Heavy Transportation,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:求从1-n所能承受的最大重量是多少,其最大重量就是1-n通路的最小边
分析:求最大生成树的最小边,排序的时候按照权值从大到小派,然后生成树,知道找到1-n的通路就可以了
#include<stdio.h>
#include<algorithm>
using namespace std;
const int MAXN=1005;
const int INF=0x7fffffff;
int father[MAXN];
int rank[MAXN];
int ans,n,m;
struct Edge
{
int u,v;
int w;
}edge[100000];//这里数组开小了re,题目并没有说m的大小,仅仅说了n的大小
bool cmp(Edge a,Edge b)
{
return a.w>b.w;//这里是关键不是从小到大了
}
void Make_set(int n)
{
for (int i=0;i<=n;i++)
{
father[i]=i;
rank[i]=0;
}
}
int Find_set(int x)
{
int r=x;
while(r!=father[r])
{
r=father[r];
}
if(r!=x) father[x]=r;
return r;
}
void Union(int x,int y)
{
if(x==y) return ;
if(rank[x]>rank[y])
{
father[y]=x;
}
else
{
if(rank[x]==rank[y])
{
rank[y]++;
}
father[x]=y;
}
}
void Kruskal(int cas)
{
sort(edge,edge+cas,cmp);
ans=INF;
for (int i=0;i<cas;i++)
{
int x=Find_set(edge[i].u);
int y=Find_set(edge[i].v);
if(x!=y) Union(x,y);
if(ans>edge[i].w) ans=edge[i].w;
if(Find_set(1)==Find_set(n)) break;
}
}
int main()
{
int T,i;
int tes=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for (i=0;i<m;i++)
{
scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w);
}
Make_set(n);
Kruskal(m);
printf("Scenario #%d:n",tes++);
printf("%dnn",ans);//后面还有一个空白空格,没看见
}
return 0;
}
- js小技巧:延时加载Flash
- 内存检测工具Valgrind
- Mysql优化系列(0)--总结性梳理
- 将淘宝数据包导入自己的商城系统
- 大话Git
- AS3中的序列化与反序列化
- 在Entity Framework 中执行T-sql语句
- 按分类统计商品总数的性能优化思考
- 机器学习之Python基础(一)
- 中国造机器人突破新高,将大量挤压就业空间,明天在哪里打工?
- 嵌入式数据库Perst
- USB 设备的PID-Product ID,VID-Vendor ID
- Asp.Net4.0/VS2010新变化(3):webform中也可以直接url路由
- IIS7上部署Asp.Net4.0时UrlRouting的若干问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos7卸载自带jdk并安装新的jdk
- 即使不懂单元测试,会用这个工具也够了~
- 统计分布讲解
- 使用PyTorch Lightning自动训练你的深度神经网络
- linux防火墙相关配置命令及操作(centos和ubuntu)
- 带你吃透Spring事务7种传播行为 | Spring第45篇
- Linux如何查看端口被占用情况?Windows如何查看端口被占用情况?
- centos7安装Docker详细步骤(无坑版教程)
- Java的Object类详解(入门必备)
- Java的包机制以及import、static import的用法详解(看这篇就够了)
- AIM2020 Efficient Super Resolution: Methods and Results
- hive的group by与distinct的区别及性能测试比较
- hive的order by操作
- centos安装mysql-server报错:No package mysql-server available.
- Java的内部类详解(结合代码全面分析)