kruscal最小树
来源:互联网 发布:淘宝店铺导航修改首页 编辑:程序博客网 时间:2024/04/30 11:50
和我一开始想的一样,连了线的点做相同的标记,直到所有的点标记相同
#include <iostream>
using namespacestd;
#define imax 1005
int n,a[28][28];
struct list
{
int u,v,w;
}e[imax];
int cmp(list a,list b)
{
return a.w<b.w;
}
void kruscal(int sum)
{
int vis[imax];
for(int i=1;i<=n;i++)
vis[i]=i;
int k=1,j=0;
//排序
sort(e,e+sum,cmp);
while(k<n)
{
int t1=vis[e[j].u];
int t2=vis[e[j].v];
if(vis[e[j].u]!=vis[e[j].v])
{
printf("%d->%d,%d\n",e[j].u,e[j].v,e[j].w);
k++;
for(int i=1;i<=n;i++)
{
if(vis[i]==t2)
vis[i]=t1;
}
}
j++;
}
}
int main()
{
int i,j,k,cost;
char ch;
while(scanf("%d",&n),n!=0)
{
getchar();
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=imax;
for(i=1;i<n;i++)
{
scanf("%c %d",&ch,&k);
getchar();
while(k--)
{
scanf("%c %d",&ch,&cost);
getchar();
j=ch-'A'+1;
a[i][j]=cost;
}
}/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%4d ",a[i][j]);
printf("\n");
}*/
k=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]!=imax)
{
e[k].u=i;//起点
e[k].v=j;//末点
e[k].w=a[i][j];//值
k++;
}
}
}
kruscal(k);
// printf("%d\n",result);
}
//cout << "Hello, World!\n";
return0;
}
/*
9
A 2 B 12 I 25
B 3 C 10 H 40 I 8
C 2 D 18 G 55
D 1 E 44
E 2 F 60 G 38
F 0
G 1 H 35
H 1 I 35
*/
- kruscal最小树
- 最小树 次小树 模板
- 图生成最小树
- 最小树Prime算法
- 图-最小树
- 最小树结构-普利姆
- POJ1258最小树水。。
- kruskal 生成最小树
- hdu4756 最小树+树形dp
- 最小树-克鲁斯卡尔
- hdu4081 最小树+DFS或者次小树的变形
- 小树
- Prim算法生成最小树 Powerby KTL
- ZOJ 1203 Swordfish(Kruskal 最小树)
- 求最小树的Kruskal算法
- NEFU OJ 205 最小树(一)
- NEFU OJ 206 最小树(二)
- NEFUOJ 209 湖南修路(最小树)
- SpringMVC学习
- android 学习笔记13-新特性Fragment 帧动画 补间动画 属性动画
- 编码与解码(python 经验)
- HTML5客户端数据存储Web Storage——localStorage与sessionStorage
- 从零开始学习Java——基础知识之数组(第五天)
- kruscal最小树
- 初学linux(-)
- ftp服务
- Oracle学习之:数据迁移工具(1):SQL Loader
- 千古
- 初学linux(二)
- 工程管理器——make
- 江湖
- android自学之环境配置