http://poj.org/problem?id=1797

题意:就是从第一个城市运货到第n个城市,最多可以一次运多少货。

输入的意思分别为从哪个城市到哪个城市,以及这条路最多可以运多少货物。

思路:我觉得可以用floyd来做这道题,结果交上去就TLE了,不过时间复杂度为n3TLE看起来也是比较正常,毕竟数字大。

然后我就看到网上有人用并查集来做,不然以前我都没往这方面想过,然后就用并查集来做

用并查集的思路就是,首先,对每组数据按照重量由大到小进行排序。然后查找合并。当Find(n) == Find( 1 )时,那个数据的重量也就是答案。

因为每组数据都是由大到小进行排序了,当前的重量肯定是最小的,而加入这一组数据后,上面的式子就成立了,也就说明这是第一次连通。

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> struct cm{
int x,y,weigh;
}s[]; int cmp(const void *a,const void *b)
{
return (*(cm *)b).weigh-(*(cm *)a).weigh;
} int belg[],m,n; int Find(int x)
{
int _x=x,_b;
while(belg[_x]!=_x)
_x=belg[_x];
while(x!=belg[x])
{
_b=belg[x];
belg[x]=_x;
x=_b;
}
return _x;
} int unio(int x)
{
belg[ Find( s[x].y ) ] = Find( s[x].x );
if( Find( ) == Find ( n )) return ;
return ;
} int main()
{
// freopen("in.txt","r",stdin);
int t,a=,ans;
scanf("%d",&t);
while( t-- )
{
scanf("%d%d",&n,&m);
a++;
for( int i = ; i <= n ; i++ )
belg[i]=i;
for( int i = ; i < m ; i++ )
scanf("%d%d%d",&s[ i ].x,&s[ i ].y,&s[ i ].weigh);
qsort(s,m,sizeof(s[]),cmp);
for( int i = ; i < m ; i++ )
if(unio(i))
{
ans = s[ i ].weigh;
break;
}
printf("Scenario #%d:\n%d\n\n",a,ans);
}
return ;
}

下面的是TLE了的Floyd(仅供参考,不敢确定正确性)

 #include <stdio.h>
#include <string.h> int n,m,graph[ ][ ]; int main()
{
// freopen("in.txt","r",stdin);
int t,a = ;
scanf("%d",&t);
while( t-- )
{
int b,c,d;
a++;
scanf("%d%d",&n,&m);
memset( graph , , sizeof( graph ) );
for (int i = ; i <= m ; i++ )
{
scanf("%d%d%d",&b,&c,&d);
graph[ b ][ c ] = d;
// graph[ c ][ b ] = d;
}
for( int k = ; k <= n ; k++ )
for( int i = ; i < n ; i++ )
for(int j = i+ ; j <= n ; j++ )
if( graph [ i ][ j ] > graph [ i ][ k ] && graph[ i ][ j ] > graph [ k ][ j ] )
if( graph[ i ][ k ] > graph [ k ][ j ] )
graph[ i ][ j ] = graph [ k ][ j ];
else
graph[ i ][ j ] = graph [ i ][ k ];
printf("Scenario #%d:\n%d\n\n",a,graph[ ][ n ]);
}
return ;
}

poj 1797(并查集)的更多相关文章

  1. poj 1984 并查集

    题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...

  2. POJ 2492 并查集扩展(判断同性恋问题)

    G - A Bug's Life Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  3. POJ 2492 并查集应用的扩展

    A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 28651 Accepted: 9331 Descri ...

  4. POJ 3228 [并查集]

    题目链接:[http://poj.org/problem?id=3228] 题意:给出n个村庄,每个村庄有金矿和仓库,然后给出m条边连接着这个村子.问题是把所有的金矿都移动到仓库里所要经过的路径的最大 ...

  5. poj 1733 并查集+hashmap

    题意:题目:有一个长度 已知的01串,给出多个条件,[l,r]这个区间中1的个数是奇数还是偶数,问前几个是正确的,没有矛盾 链接:点我 解题思路:hash离散化+并查集 首先我们不考虑离散化:s[x] ...

  6. poj 3310(并查集判环,图的连通性,树上最长直径路径标记)

    题目链接:http://poj.org/problem?id=3310 思路:首先是判断图的连通性,以及是否有环存在,这里我们可以用并查集判断,然后就是找2次dfs找树上最长直径了,并且对树上最长直径 ...

  7. POJ 3657 并查集

    题意: 思路: 1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂--) 2.二分+并查集 我搞了一下午+一晚上才搞出来----..(多半时间是在查错) 首先 如果我们想知道这头 ...

  8. poj 2236 并查集

    并查集水题 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  9. poj 1417(并查集+简单dp)

    True Liars Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2087   Accepted: 640 Descrip ...

随机推荐

  1. 使用phpize增加php模块

    一,phpize的好处 什么时候我们要用phpize呢?我们在安装php时: ./configure --prefix=/apps/product/php --with-config-file-pat ...

  2. Python基础之--常用模块

    Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...

  3. 判断QQ是否在线

    <html> <body> ggygygygy<br> <td><a href="http://wpa.qq.com/msgrd?V=1 ...

  4. Mysql分表和分区的区别、分库分表介绍与区别

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  5. oracle中的连接查询与合并查询总结

    连接查询: 连接查询是指基于多张表或视图的查询.使用连接查询时,应指定有效的查询条件,不然可能会导致生成笛卡尔积.如现有部门表dept,员工表emp,以下查询因查询条件无效,而产生笛卡尔积:   (各 ...

  6. ASP.NET中gridview获取当前行的索引值

    在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素:设置某一元素的值等等.下面结合实例介绍几种获得GridView当前行索引值的方法. ...

  7. Jquery 操作IFrame

    使用jquery操作iframe 1. 内容里有两个ifame <iframe id="leftiframe"...</iframe> <iframe id ...

  8. 升级xcode7.0 第三方库不能用的解决方法(bitcode是什么鬼?)

    升级完xcode,真机运行发现报错,第三方库错误,微信SDK,高德SDK都报错,如下: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib ...

  9. 大数据BI积累

    http://blog.csdn.net/wyzxg/article/category/535869 设计论文:http://www.doc88.com/p-3877368345851.html 自动 ...

  10. 关于Tchar

    因为C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和w ...