梦后楼台高锁,酒醒帘幕低垂

Time Limit: 3000/1000MS (Java/Others)

Memory Limit: 65535/65535KB (Java/Others)

Submit Status

给你一个有n个点和m条边的无向连通图,每条边都有一个权值w.

我们定义,对于一条路径,它的Charm value为该路径上所有边的权值的最大值与最小值的差.

询问从1到n的所有路径的Charm value的最小值.

Input

第一行有两个整数n,m(1≤n≤200,n−1≤m≤1000)n,m(1≤n≤200,n−1≤m≤1000),表示该图有n个点和m条边.

接下来m行,每行三个整数u,v,w(1≤u,v≤n,1≤w≤1000000),表示点u和点v之间有一条权值为w的边.

Output

输出一个数,即从1到n的所有路径的Charm value的最小值.

Sample Input

4 4

3 4 1

2 3 2

1 2 4

2 4 3

Sample Output

1


解题心得:

  1. 比赛的时候遇到这个题,第一个反应是kruskal的最小生成树,写了一会儿发现不太对,1到n这么多的路径,要最大值减最小值最小,怎么弄呢,想了半天发现没啥思路,结果是暴力,天哪。
  2. 先按照路径排一个序,然后枚举以每一条路径为起点跑kurskal,当发现1和n已经连接起来的时候就停止,记录一下值,将所有跑出来的结果取一个最小值就可以了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000;
struct PATH
{
int s,e,len;
}path[1000100];
int n,m,father[maxn]; bool cmp(PATH a,PATH b)
{
return a.len < b.len;
} void init()
{
for(int i=0;i<m;i++)
scanf("%d%d%d",&path[i].s,&path[i].e,&path[i].len);
sort(path,path+m,cmp);
} int find(int x)
{
if(x == father[x])
return x;
return father[x] = find(father[x]);
} void merge(int x,int y)
{
int fx = find(x);
int fy = find(y);
father[fy] = fx;
} int get_min(int pos)
{
int Min,Max;
bool flag = false;
Min = path[pos].len;
for(int i=pos;i<m;i++)
{
Max = path[i].len;
merge(path[i].s,path[i].e);
if(find(1) == find(n))//1和n已经连接起来
break;
}
if(find(1) == find(n))
flag = true;
if(flag)
return Max-Min;
return 0x3f3f3f3f;
} int main()
{
while(scanf("%d%d",&n,&m) != EOF)
{
init();
int Min = 0x7f7f7f7f;
for(int i=0;i<m;i++)
{
for(int i=1;i<=n;i++)
father[i] = i;
int temp = get_min(i);//枚举每一个边为起点开始连接路径
Min = min(Min,temp);
}
printf("%d\n",Min);
}
return 0;
}

CDOJ:1636-梦后楼台高锁,酒醒帘幕低垂(Kruskal+暴力)的更多相关文章

  1. 【最小生成树】【kruscal】【贪心】CDOJ1636 梦后楼台高锁,酒醒帘幕低垂

    首先,考虑到,我们需要找到一条路径,使它的最小边尽量大,最大边尽量小 然后,考虑到m比较小,我们可以去寻找一个m^2或者m^2logm的算法 考虑枚举最小边,那么我们就需要在m或者mlogm的时间内找 ...

  2. 【省选十连测之一】【线段树】【最小生成树之Kruskal】公路建设

    目录 题意 输入格式 输出格式 数据范围 思路 代码 题意 有n个点,m条双向道路,其中第条公路的两个端点是u[i],v[i],费用是c[i]. 现在给出q个询问,每次给定一个L和一个R,要求你只能够 ...

  3. 终端的乐趣--Linux下有趣的终端命令或者工具【转】

    转自:https://blog.csdn.net/gatieme/article/details/52144603 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  4. 【春训团队赛第四场】补题 | MST上倍增 | LCA | DAG上最长路 | 思维 | 素数筛 | 找规律 | 计几 | 背包 | 并查集

    春训团队赛第四场 ID A B C D E F G H I J K L M AC O O O O O O O O O 补题 ? ? O O 传送门 题目链接(CF Gym102021) 题解链接(pd ...

  5. Codeforces Gym 100803F There is No Alternative 暴力Kruskal

    There is No Alternative 题目连接: http://codeforces.com/gym/100803/attachments Description ICPC (Isles o ...

  6. cdoj 04 Complete Building the Houses 暴力

    Complete Building the Houses Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/# ...

  7. CDOJ 42/BZOJ 2753 滑雪与时间胶囊 kruskal

    2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 1376  Solved: 487[Submit][St ...

  8. UVALive - 6837 Kruskal+一点性质(暴力枚举)

    ICPC (Isles of Coral Park City) consist of several beautiful islands. The citizens requested constru ...

  9. CDOJ 1292 卿学姐种花 暴力 分块 线段树

    卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...

随机推荐

  1. linux系统redis配置环境变量

    1.测试:在任何位置登录redis redis-cli 指定服务器ip(不指定时,默认本机) redis-cli -h 127.0.0.1 指定端口(不指定时,默认6379) redis-cli -h ...

  2. 关于docker下容器和宿主机器时间不一致问题

    在前几天,在阿里云的ECS上部署一个docker应用时,发现部署的应用在请求第三方应用时,一直出现超时的异常提示,刚开始以为是第三方应用系统的问题(此系统无赖躺枪,反正也不是一次两次了,多躺几次也就习 ...

  3. [技术交流ppt]babel7中preset-env的优化使用

    备注 pdf在这里

  4. agc015E - Mr.Aoki Incubator(dp)

    题意 题目链接 平面上有$n$个点,每个点都有一个位置$x_i$,和向右的速度$v_i$ 现在要求你对其中的一些点进行染色,当一个点被染色后,在无限距离内与它相遇的点也会被染色 问在可能的$2^n$种 ...

  5. Java图形界面开发—简易记事本

          在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: ...

  6. IntelliJ IDEA IDEA 2018 激活注册码

    K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiO ...

  7. 【转】【C++】【MFC】各种数据类型大小

    *原文地址:http://blog.csdn.net/xuexiacm/article/details/8122267 /*运行结果分析: 以上结果已经很明白了,一下补充说明几点: 概念.整型:表示整 ...

  8. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  9. 全面了解linux情况常用命令

    查看linux服务器CPU详细情况1. 显示CPU个数命令 # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc ...

  10. CDQ分治入门

    前言 \(CDQ\)分治是一个神奇的算法. 它有着广泛的用途,甚至在某些题目中还能取代\(KD-Tree\).树套树等恶心的数据结构成为正解,而且常数还小得多. 不过它也有一定的缺点,如必须离线操作, ...