poj2485&&poj2395 kruskal
题意:最小生成树的最大边最小,sort从小到大即可
poj2485
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 505
int map[maxn][maxn],pa[],num,n;
struct node
{
int x;
int y;
int val;
}s[];
bool cmp(node a,node b)
{
return a.val<b.val;
}
void init()
{
int i,j;
scanf("%d",&n);
for(i=;i<=n;i++)
for(j=;j<=n;j++)
scanf("%d",&map[i][j]);
for(i=;i<=n;i++)
pa[i]=i;
}
void makemap()
{
int i,j;
num=;
for(i=;i<=n;i++)
for(j=i+;j<=n;j++)
{
s[num].x=i;s[num].y=j;s[num++].val=map[i][j];
}
}
int find(int x)
{
if(x!=pa[x])
pa[x]=find(pa[x]);
return pa[x];
}
void kruskal()
{
int i,j,ans=;
sort(s,s+num,cmp);
for(i=;i<num;i++)
{
int l1,l2;
l1=find(s[i].x);l2=find(s[i].y);
if(l1!=l2)
{
pa[l1]=l2;
ans=s[i].val;
}
}
printf("%d\n",ans);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
init();
makemap();
kruskal();
}
return ;
}
poj2395
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 2002
int pa[maxn],num,n;
struct node
{
int x;
int y;
int val;
}s[];
bool cmp(node a,node b)
{
return a.val<b.val;
}
void init()
{
int i;
for(i=;i<=n;i++)
pa[i]=i;
}
int find(int x)
{
if(x!=pa[x])
pa[x]=find(pa[x]);
return pa[x];
}
void kruskal()
{
int i,j,ans=;
sort(s,s+num,cmp);
for(i=;i<num;i++)
{
int l1,l2;
l1=find(s[i].x);l2=find(s[i].y);
if(l1!=l2)
{
pa[l1]=l2;
ans=s[i].val;
}
}
printf("%d\n",ans);
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&num)!=EOF)
{
init();
for(i=;i<num;i++)
scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].val);
kruskal();
}
return ;
}
poj2485&&poj2395 kruskal的更多相关文章
- POJ2395 Out of Hay(求最小生成树中最大的边权,Kruskal)
POJ2395 Out of Hay 寻找最小生成树中最大的边权. 使用 Kruskal 求解,即求选取的第 \(n-1\) 条合法边. 时间复杂度为 \(O(e\log e)\) . #includ ...
- poj2485 kruskal与prim
Kruskal: #include<iostream> #include<cstdio> #include<algorithm> using namespace s ...
- poj2485(Kruskal)
这道题显然是一道最小生成树的问题,参考算法导论中的Kruskal方法,先对路径长度进行排序,然后使用并查集(Disjoint Set Union)来判断节点是否连通,记录连接所有节点的最后一条路径的长 ...
- Kruskal算法求最小生成树(POJ2485)
题目链接:http://poj.org/problem?id=2485 #include <iostream> #include <stdio.h> #include < ...
- POJ-2485 Highways---最小生成树中最大边
题目链接: https://vjudge.net/problem/POJ-2485 题目大意: 求最小生成树中的最大边 思路: 是稠密图,用prim更好,但是规模不大,kruskal也可以过 #inc ...
- POJ-2395 Out of Hay---MST最大边
题目链接: https://vjudge.net/problem/POJ-2395 题目大意: 求MST中的最大边,和POJ-2495类似 思路: 模板直接过 #include<iostream ...
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- 最小生成树---Prim算法和Kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- 最小生成树(prim&kruskal)
最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法: 原始的加权连通图——————D被选作起点,选与之相连的权值 ...
随机推荐
- 关键路径 SDUTOJ 2498
SDUTOJ 2498 AOE网上的关键路径 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 一个无环的有向图称为无环图(Dire ...
- [ZZ]Android UI Automated Testing
Google Testing Blog最近发表了一篇Android UI Automated Testing,我把他转载过来,墙外地址:http://googletesting.blogspot.co ...
- C#代码创建3D模型
Demo 1:创建三角形 示例代码 构建一个只包含单个三角形及纹理坐标的网格 using UnityEngine; using System.Collections; public class Mes ...
- java 21 - 2 字符输出流
字符输出流:OutputStreamWriter 构造方法:一共4个,说2个常用的 A:OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 ...
- Gradle多项目构建
1. 创建项目 首先创建项目,名称为 test: mkdir test && cd test gradle init 这时候的项目结构如下: ➜ test tree . ├── bui ...
- 21Spring_JdbcTemplatem模板工具类的使用——配置文件(连接三种数据库连接池)
上一篇文章提到过DriverManagerDataSource只是Spring内置的数据库连接池,我们可选的方案还有c3p0数据库连接池以及DBCP数据库连接池. 所以这篇文章讲一下上面三种数据库连接 ...
- pandas 修改 DataFrame 列名
问题: 有一个DataFrame,列名为:['$a', '$b', '$c', '$d', '$e'] 现需要改为:['a', 'b', 'c', 'd', 'e'] 有何办法? import pan ...
- sql截取
String sql2="select count(*) from t_testuser where substr(INSETTIME,1,10)=to_char(sysdate,'yyyy ...
- Java NIO框架Mina、Netty、Grizzly介绍与对比(zz)
Mina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用 ...
- 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)
第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...